C#/JAVA 程式員轉GO/GOLANG程式員筆記大全(DAY 04)

來源:互聯網
上載者:User

-------------------- interface 介面

// 定義:type IHumaner interface {    SayHi()        // 介面中只能是方法聲明,沒有實現,沒有資料欄位}// Student ...type Student struct {    id     int    name string}func (tmp *Student) SayHi() {    fmt.Println("Student[%s, %d] SayHi", tmp.name, tmp.id)}// Teacher ...type Teacher struct {    addr  string    group string}func (tmp *Teacher) SayHi() {    fmt.Println("Teacher[%s, %d] SayHi", tmp.addr, tmp.group)}// MyStrtype MyStr stringfunc (tmp *MyStr) SayHi() {    fmt.Println("MyStr[%s, %d] SayHi", *tmp)}func main() {    // 定義介面類型的變數    var i IHumaner        // 只是實現了此介面的方法的類型,那麼這個類型的變數(接收者類型)就可以給i賦值    s := &Student{"loong", 666}    i = s    i.SayHi()        t := &Teacher{"cls", "ShenZhen"}    i = t    i.SayHi()        var str MyStr = "hello loong"    i = &str    i.SayHi()        // Print Result    // loong 666 ... cls ... hello loong}


-------------------- interface 介面 多態的應用

// 多態的應用func WhoSayHi(i IHumaner){    i.SayHi()}// 調用多態s := &Student{"loong", 666}t := &Teacher{"cls", "ShenZhen"}var str MyStr = "hello loong"WhoSayHi(s)WhoSayHi(t)WhoSayHi(&str)// 建立一個切片x := make([]IHumaner, 3)x[0] = sx[1] = tx[2] = &strfor _, i := range x {    i.SayHi()}


-------------------- interface 空介面 (任務類型)

func main() {    // 空介面是萬能類型    type tmp interface{} = 1    // 字串    tmp = "abc"    tmp = &v2    // .. 等等資料類型            // ***** 列印參數的內部實現就是採用的空介面    // ftm.Println(args ...interface{})}

 

-------------------- 類型斷言 (類型查詢)
struct Student struct {    id      int    name string}func main() {    i := make([]interface{}, 3)    i[0] = 1    i[1] = "hello go"    i[2] = Student{666, "loong"}        // 類型查詢    for index, data := range i {        // 第一個傳回值,第二個返回判斷結果的真假        if value, ok := data.(int); ok == true {                        }        // data.(string)      data.(Student)  都可以作為判斷    }        // 同理,data.(type) 也可以作用於判斷類型 return int, string, ...}

 

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.