濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Golang學(xué)習(xí)筆記(六):struct

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

熱門標(biāo)簽:?兓? 騰訊外呼系統(tǒng)價(jià)格 成都呼叫中心外呼系統(tǒng)平臺(tái) 電梯外呼訪客系統(tǒng) 谷歌便利店地圖標(biāo)注 浙江人工智能外呼管理系統(tǒng) 最短的地圖標(biāo)注 電銷機(jī)器人可以補(bǔ)救房產(chǎn)中介嗎 百度地圖標(biāo)注搜索關(guān)鍵詞

struct

struct,一組字段的集合,類似其他語言的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)先取外層的,可以通過指定struct名還決定取哪個(gè)
復(fù)制代碼 代碼如下:

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

struct不僅可以使用struct作為匿名字段,自定義類型、內(nè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ā)生操作,而普通類型作為Receiver僅僅是以副本作為操作對(duì)象,而不對(duì)原實(shí)例對(duì)象發(fā)生操作
復(fù)制代碼 代碼如下:

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

}


如果一個(gè)method的receiver是*T,調(diào)用時(shí),可以傳遞一個(gè)T類型的實(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繼承和重寫

采用組合的方式實(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)行方法重寫
復(fù)制代碼 代碼如下:

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

您可能感興趣的文章:
  • golang實(shí)現(xiàn)unicode轉(zhuǎn)換為字符串string的方法
  • 簡單了解Go語言中函數(shù)作為值以及函數(shù)閉包的使用
  • Go語言中函數(shù)的參數(shù)傳遞與調(diào)用的基本方法
  • 舉例詳解Go語言中os庫的常用函數(shù)用法
  • Go語言的os包中常用函數(shù)初步歸納
  • Go語言常見哈希函數(shù)的使用
  • Go語言里的new函數(shù)用法分析
  • go語言版的ip2long函數(shù)實(shí)例
  • Go語言截取字符串函數(shù)用法
  • Go語言中append函數(shù)用法分析
  • GO語言延遲函數(shù)defer用法分析
  • Go語言中的流程控制結(jié)構(gòu)和函數(shù)詳解
  • golang中strconv.ParseInt函數(shù)用法示例

標(biāo)簽:盤錦 眉山 上海 宜昌 七臺(tái)河 紹興 邢臺(tái) 雅安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang學(xué)習(xí)筆記(六):struct》,本文關(guān)鍵詞  Golang,學(xué)習(xí),筆記,六,struct,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang學(xué)習(xí)筆記(六):struct》相關(guān)的同類信息!
  • 本頁收集關(guān)于Golang學(xué)習(xí)筆記(六):struct的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    兴宁市| 天长市| 凤翔县| 阿鲁科尔沁旗| 石门县| 南江县| 海口市| 蒙自县| 鹤壁市| 鲜城| 江安县| 南川市| 灌云县| 承德县| 开封市| 门头沟区| 绍兴县| 德钦县| 昌平区| 鹤岗市| 洞头县| 庐江县| 阳新县| 宜章县| 冀州市| 尉氏县| 武宁县| 梁山县| 眉山市| 册亨县| 宜兴市| 北票市| 安泽县| 布拖县| 潢川县| 铁岭市| 盐津县| 扎赉特旗| 景洪市| 桦甸市| 呼伦贝尔市|