最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang學(xué)習(xí)筆記(六):struct

 更新時(shí)間:2015年05月09日 11:53:59   投稿:junjie  
這篇文章主要介紹了Golang學(xué)習(xí)筆記(六):struct,本文講解了struct的聲明及初始化、struct的匿名字段(繼承)、method、method繼承和重寫(xiě)等內(nèi)容,需要的朋友可以參考下

struct

struct,一組字段的集合,類(lèi)似其他語(yǔ)言的class

放棄了大量包括繼承在內(nèi)的面向?qū)ο筇匦?,只保留了組合(composition)這個(gè)最基礎(chǔ)的特性

1.聲明及初始化

復(fù)制代碼 代碼如下:

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的匿名字段(繼承)

復(fù)制代碼 代碼如下:

type Human struct {
    name string
    age int
    weight int
}

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

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

mark.name
mark.age


能夠?qū)崿F(xiàn)字段繼承,當(dāng)字段名重復(fù)的時(shí)候,優(yōu)先取外層的,可以通過(guò)指定struct名還決定取哪個(gè)
復(fù)制代碼 代碼如下:

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

struct不僅可以使用struct作為匿名字段,自定義類(lèi)型、內(nèi)置類(lèi)型都可以作為匿名字段,而且可以在相應(yīng)字段上做函數(shù)操作

3.method

復(fù)制代碼 代碼如下:

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

//method


Reciver 默認(rèn)以值傳遞,而非引用傳遞,還可以是指針
指針作為Receiver會(huì)對(duì)實(shí)例對(duì)象的內(nèi)容發(fā)生操作,而普通類(lèi)型作為Receiver僅僅是以副本作為操作對(duì)象,而不對(duì)原實(shí)例對(duì)象發(fā)生操作
復(fù)制代碼 代碼如下:

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

}


如果一個(gè)method的receiver是*T,調(diào)用時(shí),可以傳遞一個(gè)T類(lèi)型的實(shí)例變量V,而不必用&V去調(diào)用這個(gè)method
復(fù)制代碼 代碼如下:

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

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

4.method繼承和重寫(xiě)

采用組合的方式實(shí)現(xiàn)繼承

復(fù)制代碼 代碼如下:

type Human struct {
    name string
}

type Student struct {
    Human
    School string
}

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

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

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

}


還可以進(jìn)行方法重寫(xiě)
復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)

    Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)

    本文主要介紹了Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • GO語(yǔ)言gin框架實(shí)現(xiàn)管理員認(rèn)證登陸接口

    GO語(yǔ)言gin框架實(shí)現(xiàn)管理員認(rèn)證登陸接口

    這篇文章主要介紹了GO語(yǔ)言gin框架實(shí)現(xiàn)管理員認(rèn)證登陸接口,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Golang中HTTP服務(wù)的分析與設(shè)計(jì)詳解

    Golang中HTTP服務(wù)的分析與設(shè)計(jì)詳解

    這篇文章主要介紹了Golang中HTTP服務(wù)的分析與設(shè)計(jì),HTTP服務(wù)是實(shí)現(xiàn)Web應(yīng)用程序的重要組成部分,為了實(shí)現(xiàn)高效可擴(kuò)展的Web應(yīng)用程序,需要對(duì)HTTP服務(wù)進(jìn)行分析與設(shè)計(jì),需要的朋友可以參考下
    2023-05-05
  • golang實(shí)現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫(kù)功能

    golang實(shí)現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫(kù)功能

    這篇文章主要為大家詳細(xì)介紹了golang實(shí)現(xiàn)文件上傳并轉(zhuǎn)存數(shù)據(jù)庫(kù)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Go GORM版本2.0新特性介紹

    Go GORM版本2.0新特性介紹

    這篇文章主要為大家介紹了Go GORM版本2.0新特性的使用示例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 一文初探?Goroutine?與?channel基本用法

    一文初探?Goroutine?與?channel基本用法

    這篇文章主要為大家介紹了一文初探?Goroutine?與?channel基本用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 利用GoLang?Fiber進(jìn)行高性能Web開(kāi)發(fā)實(shí)例詳解

    利用GoLang?Fiber進(jìn)行高性能Web開(kāi)發(fā)實(shí)例詳解

    這篇文章主要為大家介紹了利用GoLang?Fiber進(jìn)行高性能Web開(kāi)發(fā)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Golang Defer關(guān)鍵字特定操作詳解

    Golang Defer關(guān)鍵字特定操作詳解

    defer是Go語(yǔ)言中的延遲執(zhí)行語(yǔ)句,用來(lái)添加函數(shù)結(jié)束時(shí)執(zhí)行的代碼,常用于釋放某些已分配的資源、關(guān)閉數(shù)據(jù)庫(kù)連接、斷開(kāi)socket連接、解鎖一個(gè)加鎖的資源,這篇文章主要介紹了golang中的defer函數(shù)理解,需要的朋友可以參考下
    2023-03-03
  • Golang?手寫(xiě)一個(gè)簡(jiǎn)單的并發(fā)任務(wù)?manager

    Golang?手寫(xiě)一個(gè)簡(jiǎn)單的并發(fā)任務(wù)?manager

    這篇文章主要介紹了Golang?手寫(xiě)一個(gè)簡(jiǎn)單的并發(fā)任務(wù)?manager,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Golang接入釘釘通知的示例代碼

    Golang接入釘釘通知的示例代碼

    本文主要介紹了Golang接入釘釘通知的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

子长县| 法库县| 吴川市| 财经| 仙桃市| 浮山县| 霍邱县| 临沂市| 高唐县| 凌云县| 隆德县| 光山县| 阳朔县| 治县。| 炎陵县| 西贡区| 青海省| 白朗县| 阳朔县| 四子王旗| 新余市| 南投市| 荥经县| 绵阳市| 乡城县| 东安县| 莒南县| 隆德县| 溧阳市| 正宁县| 桂平市| 武定县| 上杭县| 昌江| 沙坪坝区| 横峰县| 融水| 信阳市| 交口县| 惠东县| 锦屏县|