内容简介:大家好,我是彬哥,本节给大家讲下go语言接口实现多态的例子。多态概念:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让
大家好,我是彬哥,本节给大家讲下 go 语言接口实现多态的例子。
多态概念:
所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
代码如下:
package main import ( "fmt" ) /* 接口 例子 1. 实现多态 2. 主要首个字母的大小写表示其他包的可见性问题(首字母大写:public ,首字母小写:private) */ /* 定义接口: type interface_Name interface{ interface_Method } */ type Conn interface { Destroy() } /* 定义结构体: type struct_Name struct { } */ type Data_a struct { UID int Name string Lev int } // Data_a 实现接口的方法 func (this *Data_a) Destroy() { fmt.Println("Destroy:", this.UID) } type Data_b struct { UID int Name string Lev int Decs string } // Data_b 实现接口的方法 func (this *Data_b) Destroy() { fmt.Println("Destroy:", this.UID) } /* 多态函数实现: func Show(conn interface_Name) */ func Show(conn Conn) { conn.Destroy() return } // 调用 func main() { // 初始化结构体1 data_a := &Data_a{ UID: 1, Name: "test1", Lev: 1, } Show(data_a) // 初始化结构体2 data_b := &Data_b{ UID: 2, Name: "test1", Lev: 99, Decs: "描述", } Show(data_b) return }
执行结果
每天坚持学习1小时Go语言,大家加油,我是彬哥,下期见!如果文章中不同观点、意见请文章下留言或者关注下方订阅号反馈!
LollipopGo游戏服务器地址:
https://github.com/Golangltd/LollipopGo
社区视频课程课件GIT地址:
https://github.com/Golangltd/codeclass
Golang语言社区论坛 :
www.Golang.LtdGolang语言社区
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First HTML and CSS
Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99
Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!