iT邦幫忙

2024 iThome 鐵人賽

DAY 13
1
Software Development

可以Go一輩子嗎?系列 第 13

Day13. 結構化程式設計(2)

  • 分享至 

  • xImage
  •  

Day13. 結構化程式設計(2)

Interface

介紹

在昨天的文章中,我們了解了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()
}

image


那麼今天的文章就到此告一段落,如果我的文章有任何地方有錯誤請在留言區反應。
明天將會介紹Go語言中的指標與如何操作
time

REF


上一篇
Day12. 結構化程式設計(1)
下一篇
Day14. 指標(pointer)的基本概念與操作
系列文
可以Go一輩子嗎?31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言