需要澄清golang中的动态类型

时间:2013-12-11 11:54:42

标签: types go

考虑到静态类型语言的事实,某个值的动态类型的含义是什么?

1 个答案:

答案 0 :(得分:33)

处理接口值时,变量的“动态类型”很重要。 动态类型定义如下(source):

  

变量的静态类型(或仅仅类型)是其声明定义的类型。 接口类型的变量也有一个不同的动态类型,它是运行时存储在变量中的值的实际类型。动态类型在执行期间可能会有所不同,但始终可以分配给静态类型接口变量。对于非接口类型,动态类型始终是静态类型。

考虑这个例子:

var someValue interface{} = 2

someValue的静态类型为interface{},但动态类型为int,可能非常 未来好转。例如:

var someValue interface{} = 2

someValue = "foo"

在上面的示例中,动态类型someValue已从int更改为string