在昨天的文章中,我們了解了struct是一組不同型態變數的組合。今天,我們將探討另一個重要的概念——interface。
在Go語言中,interface是一組抽象method的集合,你不能直接在interface實作method行為,而是透過綁定到其他具體類型(例如struct)作為method來實作。
透過interface可以讓我們實現多態性,進而在不同的類型之間共用相同的接口,而不必關心這些類型的具體實現細節。
此外,空interface還可以作為動態類型來使用。也就是說我們可以根據不同的需求,將不同的類型賦值給interface變數。
首先你需要先定義一個interface, 並在裡面塞入預定的行為
type HumanAction interface{
SaySomething(something string)
GetMood() string
}
然後針對需要繼承該interface的類別實作method(注意:一定要實作該interface中的每一個method,否則無法編譯)
func (h Human) SaySomething(something string){
fmt.Println(something)
}
func (h *Human) GetMood() string{
return h.mood
}
跟struct一樣,Interface也可以透過類型嵌入來做到繼承
type SoyoAction interface{
HumanAction
SaySomething(something string)
GetMood() string
}
func (soyo *Soyo) Kneeling() {
soyo.mood = "Sad"
soyo.SaySomething("要是沒有小祥你們的話,我就...\n要我怎麼做你們才肯回來? 😭只要是我能做的,我什麼都願意做")
}
func main() {
soyo := &Soyo{
Human: NewHuman("soyo", "", 16, 162),
}
soyo.Kneeling()
}
那麼今天的文章就到此告一段落,如果我的文章有任何地方有錯誤請在留言區反應。
明天將會介紹Go語言中的指標與如何操作