文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
嵌入 interface
Go 里面真正吸引人的是它内置的逻辑语法,就像在学习 Struct 时学习的匿名字段,那么相同的逻辑引入到 interface 里面,更加完美了。如果一个 interface1 作为 interface2 的一个嵌入字段,那么 interface2 隐式的包含了 interface1 里面的 method。
可以看到源码包 container/heap
里面有这样的一个定义
type Interface interface {
sort.Interface //嵌入字段 sort.Interface
Push(x interface{}) //a Push method to push elements into the heap
Pop() interface{} //a Pop elements that pops elements from the heap
}
看到 sort.Interface
其实就是嵌入字段,把 sort.Interface
的所有 method
给隐式的包含进来了。也就是下面三个方法:
type Interface interface {
// Len is the number of elements in the collection.
Len() int
// Less returns whether the element with index i should sort
// before the element with index j.
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
Swap(i, j int)
}
另一个例子就是 io 包下面的 io.ReadWriter
,它包含了 io 包下面的 Reader
和 Writer
两个 interface
:
// io.ReadWriter
type ReadWriter interface {
Reader
Writer
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论