您好,登錄后才能下訂單哦!
這篇文章給大家分享的是go語言中多態的用法,相信大部分人都還沒學會這個技能,為了讓大家學會,給大家總結了以下內容,話不多說,一起往下看吧。
C++里面有多態是其三大特性之一,那么golang里面的多態我們該怎么實現?
golang里面有一個接口類型interface,任何類型只要實現了接口類型,都可以賦值,如果接口類型是空,那么所有的類型都實現了它。因為是空嘛。
golang里面的多態就是用接口類型實現的,即定義一個接口類型,里面聲明一些要實現的功能,注意,只要聲明,不要實現,
例如:type People interface { // 只聲明 GetAge() int GetName() string }
然后你就可以定義你的結構體去實現里面聲明的函數,你的結構體對象,就可以賦值到該接口類型了。
寫了一個測試程序:
package main import ( "fmt" ) type Biology interface { sayhi() } type Man struct { name string age int } type Monster struct { name string age int } func (this *Man) sayhi() { // 實現抽象方法1 fmt.Printf("Man[%s, %d] sayhi\n", this.name, this.age) } func (this *Monster) sayhi() { // 實現抽象方法1 fmt.Printf("Monster[%s, %d] sayhi\n", this.name, this.age) } func WhoSayHi(i Biology) { i.sayhi() } func main() { man := &Man{"我是人", 100} monster := &Monster{"妖怪", 1000} WhoSayHi(man) WhoSayHi(monster) }
運行結果:
Man[我是人, 100] sayhi
Monster[妖怪, 1000] sayhi
關于go語言中多態的用法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。