Golang中接口和继承的区别 :
最佳实践 :
package main import ( "fmt" ) //Monkey结构体 type Monkey struct { Name string } //声明接口 type BirdAble interface { Flying() } type FishAble interface { Swimming() } func (this *Monkey) climbing() { fmt.Println(this.Name, " 生来会爬树..") } //LittleMonkey结构体 type LittleMonkey struct { Monkey //继承 } //让LittleMonkey实现BirdAble func (this *LittleMonkey) Flying() { fmt.Println(this.Name, " 通过学习,会飞翔...") } //让LittleMonkey实现FishAble func (this *LittleMonkey) Swimming() { fmt.Println(this.Name, " 通过学习,会游泳..") } func main() { //创建一个LittleMonkey 实例 monkey := LittleMonkey{ Monkey { Name : "悟空", }, } monkey.climbing() monkey.Flying() monkey.Swimming() }
执行结果如下图所示:
Go语言中 继承和多态的对比 以及最佳实践 介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。
原文链接:https://blog.csdn.net/cui_yonghua/article/details/94410677?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163523372016780265481777%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163523372016780265481777&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-6-94410677.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450