考虑到go是静态类型语言的事实,某个值的动态类型的含义是什么?
答案 0 :(得分:33)
处理接口值时,变量的“动态类型”很重要。 动态类型定义如下(source):
变量的静态类型(或仅仅类型)是其声明定义的类型。 接口类型的变量也有一个不同的动态类型,它是运行时存储在变量中的值的实际类型。动态类型在执行期间可能会有所不同,但始终可以分配给静态类型接口变量。对于非接口类型,动态类型始终是静态类型。
考虑这个例子:
var someValue interface{} = 2
someValue
的静态类型为interface{}
,但动态类型为int
,可能非常
未来好转。例如:
var someValue interface{} = 2
someValue = "foo"
在上面的示例中,动态类型someValue
已从int
更改为string
。