nem*_*emo 34

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

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

考虑这个例子:

var someValue interface{} = 2
someValueinterface{}int
var someValue interface{} = 2

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