首页 > 代码库 > Golang的多态
Golang的多态
Golang的多态是个技巧性质的东西,我看许式伟的书中并未提到真正意义的多态,我自己摸索了一下,我觉得以下的书写,可能最复合工程需要。
首先看例1:
type IFly interface { fly()}type A struct {}func (a A) fly() { println("A.fly")}type B struct { A}func (b B) fly() { println("B.fly")}func main() { a := B{} a.fly() fmt.Println(a)}
首先要学会利用interface来进行多态。
然而,这是一个不成熟的多态。
看例2就知道这个方案完全不能用于实践
type IFly interface { fly()}type A struct {}// 新加一个成员func (a A) fly2() { a.fly()}func (a A) fly() { println("A.fly")}type B struct { A}func (b B) fly() { println("B.fly")}func main() { a := B{} a.fly2() fmt.Println(a)}
这个结果并不让人满意。
解决方案可以这么弄。
type IFly interface { fly()}type A struct { a string Derived IFly}func (a A) fly2() { a.Derived.fly()}func (a A) fly() { println("A:fly")}type B struct { A}func (b B) fly() { println("B:fly"+ b.a)}func main() { a := B{} a.Derived = a a.fly2()}
OK,这是我自己摸索的,不知道别人是什么办法?
Golang的多态
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。