首頁 >後端開發 >Golang >如何實作golang語言的多態

如何實作golang語言的多態

WJ
WJ原創
2020-06-09 17:09:014002瀏覽

如何實作golang語言的多態

如何實作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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn