go語言中的繼承和實現
go語言沒有類,只有結構體。以及還有介面,如何利用結構體和介面來實現類似與java的繼承和實現呢?
我試著整理一下。
實現思路
實現傳送的方法。定義一個傳送的物件 (info) -傳送時需要的屬性引數,定義 傳送介面(send) 。如果我們需要郵件傳送,定義 郵件物件(email) ,實現傳送介面.
1.定義結構體
a)定義一個資訊結構體-info
//Info 資訊 type Info struct { name string }
b)定義一個郵件資訊/簡訊資訊,包含(繼承)資訊結構體
//InfoEmail 郵件資訊 type InfoEmail struct { Info address string // 郵件獨有屬性 } //InfoSMS 簡訊 type InfoSMS struct { Info content string // 簡訊獨有屬性 }
2.定義傳送介面-ISend
a)定義一個介面宣告方法
//ISend 傳送介面 type ISend interface { send() }
b)郵件/簡訊分別實現
// 簡訊傳送實現 func (infoSMS *InfoSMS) send() { fmt.Println(math.Exp(10), "i am infoSMS send") } // 郵件傳送實現 func (infoEmail *InfoEmail) send() { fmt.Println("i am infoEmail send") }
3、使用
a)主程式呼叫
func main() { var Mysend ISend Mysend = new(InfoEmail) Mysend.send() Mysend = new(InfoSMS) Mysend.send() }
b)結果

image.png
結論
總體上是實現了繼承和實現的面向物件的思路。如果應用到生產中的話,還是應該用工廠的模式來實現,go語言還沒深入研究,各位看官還請指點一二。如果覺得還可以,請支援一下,謝謝!