golang基础--Interface接口 (2)

将对象赋值给接口是,会发生拷贝,而接口内部存储的是只想这个复制品的指针,也就意味着接口无法修改状态,也无法获取指针。

... func main() { pc := PhoneConnecter{"ipad book pro"} //实例化一个结构 var a Connecter //定义a为接口变量 a = Connecter(pc) //接口强制转换 a.Connect() pc.name = "Iphone 7" a.Connect() ... /*输出 pc.name= "ipad book pro" Connected: ipad book pro pc.name = "Iphone 7" Connected: ipad book pro */ }

只有当 接口存储的类型和对象都为nil时,接口才等于nil

package main import "fmt" func main() { var a interface{} fmt.Println(a == nil) var p *int = nil a = p fmt.Println(a == nil) } /*输出 true false */

接口调用不会做Receiver的自动转换

接口同样支持匿名字段的方法

接口也可以实现类似OOP(面向对象编程)中的多态

空接口可以作为任何类型数据的容器

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywwps.html