【发布时间】:2013-12-29 09:15:39
【问题描述】:
考虑到go 是静态类型语言,那么动态类型的一些值是什么意思?
【问题讨论】:
考虑到go 是静态类型语言,那么动态类型的一些值是什么意思?
【问题讨论】:
在处理接口值时,变量的“动态类型”很重要。 动态类型定义如下(source):
变量的静态类型(或只是类型)是由其声明定义的类型。 接口类型的变量也有一个独特的动态类型,它是运行时变量中存储的值的实际类型。动态类型在执行过程中可能会发生变化,但始终可以分配给静态类型接口变量。对于非接口类型,动态类型始终是静态类型。
考虑这个例子:
var someValue interface{} = 2
someValue 的静态类型为interface{},但动态类型为int,可能非常
好在未来改变。示例:
var someValue interface{} = 2
someValue = "foo"
在上面的示例中,someValue 的动态类型从 int 更改为 string。
【讨论】:
For non-interface types, the dynamic type is always the static type。