91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言如何實現多態?

發布時間:2022-05-13 13:44:50 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

這篇“Go語言如何實現多態 ”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Go語言如何實現多態 ”文章吧。

多態是什么

相信學過Java這種面向對象語言的同學對于多態來說都不陌生,在代碼執行的時候,能夠根據子類的類型去執行子類當中的方法。多態是指代碼可以根據類型的具體實現采取不同行為的能力。如果一個類型實現了某個接口,所有使用這個接口的地方,都可以支持這種類型的值。

Go語言多態舉例

有這樣一個場景,我們在應用開發中涉及到很多通知事件,通知的類型可以是通過微信、QQ、Email等,那么我們可以抽象出一個接口,定義一個通知的接口,然后微信通知類、QQ通知類、Email通知類分別實現對應的通知方法。

定義一個通知類型:notifier

// 通知者接口
type Notifier interface {
    // 通知方法,可以由具體的類進行實現
    notify()
}

定義微信類型、QQ類型、Email類型,并實現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)
}

定義發送通知方法,入參為Notifier;等需要調用的時候,需要傳入實現了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語言如何實現多態?

以上就是關于“Go語言如何實現多態 ”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正宁县| 大余县| 乐昌市| 湘潭县| 西乌珠穆沁旗| 张家界市| 庆元县| 祁阳县| 定日县| 米林县| 辉县市| 容城县| 什邡市| 高邮市| 大理市| 确山县| 枣强县| 武鸣县| 夏河县| 如东县| 封开县| 合阳县| 福海县| 克什克腾旗| 年辖:市辖区| 阜南县| 连平县| 荔波县| 阳原县| 洮南市| 姜堰市| 招远市| 如东县| 喀喇沁旗| 通州区| 资讯| 上虞市| 平凉市| 成都市| 嘉荫县| 西昌市|