需要澄清golang中的动态类型

tar*_*lah 13 types go

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

nem*_*emo 34

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

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

考虑这个例子:

var someValue interface{} = 2
Run Code Online (Sandbox Code Playgroud)

静态类型someValueinterface{}动态类型,int并且可能在未来很好地改变.例:

var someValue interface{} = 2

someValue = "foo"
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,动态类型从someValue更改intstring.

  • +1,这是关键点:对于非接口类型,动态类型始终是静态类型。 (2认同)