免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Golang學習筆記(六):struct

struct

成都創新互聯是一家專業提供盤龍企業網站建設,專注與成都網站設計、成都做網站、H5建站、小程序制作等業務。10年已為盤龍眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。

struct,一組字段的集合,類似其他語言的class

放棄了大量包括繼承在內的面向對象特性,只保留了組合(composition)這個最基礎的特性

1.聲明及初始化

復制代碼 代碼如下:

type person struct {
    name string
    age  int
}

//初始化

func main() {
    var P person

    P.name = "tom"
    P.age = 25
    fmt.Println(P.name)

    P1 := person{"Tom1", 25}
    fmt.Println(P1.name)

    P2 := person{age: 24, name: "Tom"}
    fmt.Println(P2.name)
}

2.struct的匿名字段(繼承)

復制代碼 代碼如下:

type Human struct {
    name string
    age int
    weight int
}

tyep Student struct {
    Human //匿名字段,默認Student包含了Human的所有字段
    speciality string
}

mark := Student(Human{"mark", 25, 120}, "Computer Science")

mark.name
mark.age


能夠實現字段繼承,當字段名重復的時候,優先取外層的,可以通過指定struct名還決定取哪個
復制代碼 代碼如下:

mark.Human = Human{"a", 55, 220}
mark.Human.age -= 1

struct不僅可以使用struct作為匿名字段,自定義類型、內置類型都可以作為匿名字段,而且可以在相應字段上做函數操作

3.method

復制代碼 代碼如下:

type Rect struct {
    x, y float64
    width, height float64
}

//method


Reciver 默認以值傳遞,而非引用傳遞,還可以是指針
指針作為Receiver會對實例對象的內容發生操作,而普通類型作為Receiver僅僅是以副本作為操作對象,而不對原實例對象發生操作
復制代碼 代碼如下:

func (r ReciverType) funcName(params) (results) {

}


如果一個method的receiver是*T,調用時,可以傳遞一個T類型的實例變量V,而不必用&V去調用這個method
復制代碼 代碼如下:

func (r *Rect) Area() float64 {
    return r.width * r.height
}

func (b *Box) SetColor(c Color) {
    b.color = c
}

4.method繼承和重寫

采用組合的方式實現繼承

復制代碼 代碼如下:

type Human struct {
    name string
}

type Student struct {
    Human
    School string
}

func (h *Human) SayHi() {
    fmt.Println(h.name)
}

//則Student和Employee的實例可以調用
func main() {
    h := Human{name: "human"}
    fmt.Print(h.name)
    h.SayHi()

    s := Student{Human{"student"}}
    s.SayHi()

}


還可以進行方法重寫
復制代碼 代碼如下:

funct (e *Student) SayHi() {
    e.Human.SayHi()
    fmt.Println(e.School)
}

文章名稱:Golang學習筆記(六):struct
分享路徑:http://m.newbst.com/article24/jicije.html

成都網站建設公司_創新互聯,為您提供網站設計公司網站設計品牌網站設計App開發用戶體驗App設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設