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

溫馨提示×

溫馨提示×

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

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

Go中interface接口初體驗之參數傳遞的鴨子形態

發布時間:2020-04-25 17:28:32 來源:網絡 閱讀:742 作者:ck_god 欄目:編程語言
// code_21_struct_interface_firsttime project main.go
package main

import (
    "fmt"
)

/*
    1)接口interface是一個自定義類型,接口類型具體描述了一系列方法的集合。

    2)接口類型是一種抽象的類型,它不會暴露出它代表的對象的內部值的結構和這個對象支持的基礎操作的結合,
    他們只會展示出他們自己的方法。
    因此接口類型不能將其實例化。

    3)Go通過接口實現了鴨子類型(duck-typing)
*/

type Humaner interface {
    SayHi()
    //1)一般以er結尾
    //2)接口只有方法聲明,沒有實現,沒有數據字段
    //3)接口可以匿名嵌入其他接口,或嵌入到結構中
}

type Student struct {
    name  string
    score float64
}

//Student實現SayHi()方法
func (s *Student) SayHi() {
    fmt.Printf("Student[%s,%f] say hi!!!\n", s.name, s.score)
}

type Teacher struct {
    name  string
    group string
}

func (t *Teacher) SayHi() {
    fmt.Printf("Teacher[%s,%s] say hi!!!\n", t.name, t.group)
}

type MyStr string

func (str MyStr) SayHi() {
    fmt.Printf("MyStr[%s] say hi!", str)
}

func WhoSayHi(i Humaner) {
    i.SayHi()
}

func main() {
    //接口的實現:1)接口是用來定義行為的類型。
    //2)這些被定義的行為不由接口直接實現,而是通過方法由用戶定義的類型實現。
    //3)一個實現了這些方法的具體類型是這個接口類型的實例。
    //4)如果用戶定義的類型實現了某個接口類型聲明的一組方法,那么這個用戶定義的類型的值就可以賦給這個接口類型的值。
    //這個賦值會把用戶定義的類型的值存入接口類型的值。

    s := &Student{"ck_god", 88.88}
    t := &Teacher{"god_girl", "computer_programmer"}
    var tmp MyStr = "字符對象"

    s.SayHi()
    t.SayHi()
    tmp.SayHi()
    fmt.Println("\n==============\n")

    //多態--鴨子模型,調用同一接口,不同表現
    WhoSayHi(s)
    WhoSayHi(t)
    WhoSayHi(tmp)

    fmt.Println("\n==============\n")
    x := make([]Humaner, 3)
    x[0], x[1], x[2] = s, t, tmp

    for _, value := range x {
        value.SayHi()
    }
    fmt.Println("\n==============\n")
}

運行結果:

Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符對象] say hi!
==============

Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符對象] say hi!
==============

Student[ck_god,88.880000] say hi!!!
Teacher[god_girl,computer_programmer] say hi!!!
MyStr[字符對象] say hi!
==============
向AI問一下細節

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

AI

黎平县| 阳春市| 四会市| 富平县| 禹城市| 雷山县| 织金县| 鹤庆县| 平谷区| 房产| 平安县| 邯郸县| 长岭县| 郯城县| 界首市| 忻州市| 万盛区| 左云县| 长葛市| 喜德县| 公主岭市| 保靖县| 阿拉尔市| 古田县| 那坡县| 三台县| 霍城县| 青龙| 秦安县| 论坛| 临夏县| 砚山县| 黄冈市| 海盐县| 迁西县| 唐山市| 罗甸县| 霍邱县| 沙湾县| 开封市| 图木舒克市|