如何實作golang語言的多態?
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
相關推薦:Golang教學
以上是如何實作golang語言的多態的詳細內容。更多資訊請關注PHP中文網其他相關文章!