您好,登錄后才能下訂單哦!
這篇“Go語言如何實現(xiàn)多態(tài) ”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Go語言如何實現(xiàn)多態(tài) ”文章吧。
相信學過Java這種面向對象語言的同學對于多態(tài)來說都不陌生,在代碼執(zhí)行的時候,能夠根據(jù)子類的類型去執(zhí)行子類當中的方法。多態(tài)是指代碼可以根據(jù)類型的具體實現(xiàn)采取不同行為的能力。如果一個類型實現(xiàn)了某個接口,所有使用這個接口的地方,都可以支持這種類型的值。
有這樣一個場景,我們在應用開發(fā)中涉及到很多通知事件,通知的類型可以是通過微信、QQ、Email等,那么我們可以抽象出一個接口,定義一個通知的接口,然后微信通知類、QQ通知類、Email通知類分別實現(xiàn)對應的通知方法。
定義一個通知類型:notifier
// 通知者接口 type Notifier interface { // 通知方法,可以由具體的類進行實現(xiàn) notify() }
定義微信類型、QQ類型、Email類型,并實現(xiàn)notify方法,以指針類型作為方法的接收者
type WechatNotifier struct { Name string Message string } func (w *WechatNotifier) notify() { fmt.Printf("%v notify %v \n", w.Name, w.Message) } type QQNotifier struct { Name string Message string } func (q *QQNotifier) notify() { fmt.Printf("%v notify %v \n", q.Name, q.Message) } type EmailNotifier struct { Name string Message string } func (e *EmailNotifier) notify() { fmt.Printf("%v notify %v \n", e.Name, e.Message) }
定義發(fā)送通知方法,入?yún)镹otifier;等需要調(diào)用的時候,需要傳入實現(xiàn)了Notifier中的接口的類型
func sendNotify(notifier Notifier) { notifier.notify() }
測試一下
func main() { w := &WechatNotifier{ Name: "微信", Message: "微信消息", } q := &QQNotifier{ Name: "QQ", Message: "QQ消息", } e := &EmailNotifier{ Name: "Email", Message: "Email消息", } // 接受微信類型 sendNotify(w) // 接受QQ類型 sendNotify(q) // 接受Email類型 sendNotify(e) }
測試結果如下:
以上就是關于“Go語言如何實現(xiàn)多態(tài) ”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關的知識內(nèi)容,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。