golang接口的这个用法,我到还真是百思不得其解,望解惑

ddxx11223 · · 975 次点击
是方法,抽象说就是接口 另外,`任何类型只要它实现了某个interface A的所有接口,这个类型的变量就可以转换为A类型` 这里的**转换**是指赋值给A类型的变量或`v2 := A(v1)`这样显示转换; 类型断言`x.(T)`,是专门针对interface类型的类型检查和转换操作,除了可以做`v2 = A(v1)`这样的简单转换能做的,更重要的是做简单转换做不了的, 就像上面 var m = Message{ Name: "Alice", } var ii II = &m var i I = I(ii) var eii II = II(i) //cannot convert i (type I) to type II:I does not implement II (missing f1 method) var cii II = i.(II)
#6
更多评论
叫做:类型断言,可以理解为类型转换。
#1
规范里面是这里定义的: “An interface type specifies a method set called its interface. A variable of interface type can store a value of ***any*** type with a method set that is any superset of the interface” 这里的any也包括其它interface类型, 任何类型只要它实现了某个interface A的所有接口,这个类型的变量就可以转换为A类型
#2