pair1 := StringPair{"abc","def"}
pair2 := StringPair{"ghi","jkl"}
point := Point{5, 7}
fmt.Println(pair1, pair2, point)
pair1.exchange()
pair2.exchange()
point.exchange()
fmt.Println(pair1, pair2, point)
// exchangeThese(pair1, pair2) //wrong
exchangeThese(pair1, pair2)
fmt.Println(pair1, pair2)
}
【go语言实例化 go语言实现接口】运行结果
在本例中,自定义类型StringPair和Point指针实现了接口Exchanger所需的方法,因此该类型的值可以被赋值给接口的值 。
另外,特别注意一点 。如果使用exchangeThese(pair1,
pair2)会导致编译错误(如下图),正确写法应当是exchangeThese(pair1,
pair2) 。这是由于真正满足接口Exchanger的类型是StringPair指针,而非StringPair 。
在golang中,值接收者和指针接收者的方法集是不同的 。只是golang会智能地解引用和取引用,使得二者的方法集看上去是一样的 。但是 , 在调用exchangeThese时,就凸显出二者的不同了 。
go语言实例化的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言实现接口、go语言实例化的信息别忘了在本站进行查找喔 。
- redisson执行lua脚本 redis脚本初始化
- 2021年高考最热作文 mysql创建实例用户
- mysql数据库优化 mysql订单优化
- 使用redis实现分布式锁及其优化 redis分布式性能
- mongodb聚合查询优化 mongodb聚合运算需要索引吗
- mongodb集群启动 mongodb集群初始化
- mongodb用户权限 mongodb用户管理可视化
- redis 持久化方案 redis持久化整合
- mongodb list mongodb序列化
- redis分层 redis多个实例拆分
