Golang:将接口动态转换为类型变量

在进行中,是否可以通过某种方式动态地转换变量?

例如,如果简单的转换将是:

var intAge  = interfaceAge.(int)

如果我事先不知道年龄是整数怎么办?一种简单的书写方式是

var x = getType()

var someTypeAge = interfaceAge(.x)

有没有办法实现这样的目标?反射包提供了一些在运行时确定或强制转换类型的方法-但我找不到像上述提到的东西(适用于所有类型的通用方案)。

回答:

不,你不能。Go是一种静态类型的语言。变量的类型在编译时确定。

如果要动态确定的typeinterface{}可以使用类型切换:

var t interface{}

t = functionOfSomeType()

switch t := t.(type) {

default:

fmt.Printf("unexpected type %T", t) // %T prints whatever type t has

case bool:

fmt.Printf("boolean %t\n", t) // t has type bool

case int:

fmt.Printf("integer %d\n", t) // t has type int

case *bool:

fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool

case *int:

fmt.Printf("pointer to integer %d\n", *t) // t has type *int

}

以上是 Golang:将接口动态转换为类型变量 的全部内容, 来源链接: utcz.com/qa/415300.html

回到顶部