第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go 中的結(jié)構(gòu)初始化和方法聲明

Go 中的結(jié)構(gòu)初始化和方法聲明

Go
www說 2021-11-01 15:10:33
我是 Go 新手,對(duì)結(jié)構(gòu)很好奇。讓我們定義一個(gè)結(jié)構(gòu)Ttype T struct {    size int}我見過不同類型的結(jié)構(gòu)初始化。有什么區(qū)別?new(T)     // 1T{size:1}  // 2&T{size:1} // 3以及兩種類型的方法聲明:func (r *T) area() int // 1func (r T) area() int  // 2正確的方法應(yīng)該是什么?
查看完整描述

2 回答

?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

下面是不同的例子:


type Animal struct {

    Legs      int

    Kingdom   string

    Carnivore bool

}

通過引用初始化


返回指向結(jié)構(gòu)的指針


var tiger = &Animal{4, "mammalia", true}


fmt.Println(tiger.Kingdom) // print "mammalia"


func changeKingdom(a *Animal) {

    a.Kingdom = "alien"    // modify original struct

}


changeKingdom(tiger) 

fmt.Println(tiger.Kingdom) // print "alien"

構(gòu)造函數(shù)New初始化


返回一個(gè)帶有零值的指針


var xAnimal = New(Animal)


fmt.Println(xAnimal.Kingdom)   // print ""

fmt.Println(xAnimal.Legs)      // print 0

fmt.Println(xAnimal.carnivore) // print false


changeKingdom(xAnimal)

fmt.Println(xAnimal.Kingdom)   // print "alien"

按值初始化(復(fù)制)


返回原始結(jié)構(gòu)的單獨(dú)副本


var giraffe = Animal{4, "mammalia", false}


fmt.Println(giraffe.Kingdom) // print "mammalia"


func changeKingdom(a Animal) {

    a.Kingdom = "extraterrestrial"

}


changeKingdom(giraffe)

fmt.Println(giraffe) // print "mammalia"

在使用結(jié)構(gòu)體而不是副本時(shí),您會(huì)更頻繁地處理指針。


查看完整回答
反對(duì) 回復(fù) 2021-11-01
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

  1. 分配

new 和 &T{size:1} 返回 *T

T{size:1} 返回 T

內(nèi)置函數(shù) new 接受類型 T,在運(yùn)行時(shí)為該類型的變量分配存儲(chǔ)空間,并返回指向它的類型 *T 的值。變量按照初始值部分中的描述進(jìn)行初始化。

2.

任何其他命名類型 T 的方法集由所有接收者類型為 T 的方法組成。 對(duì)應(yīng)指針類型 *T 的方法集是所有接收者為 *T 或 T 的方法的集合(也就是說,它還包含方法集的)。

變量 pt * T

無功

func (r *T) area() int

您可以使用 pt.area() 或 t.area()

func (r T) area() int

你可以用t.area(),不能用pt.area()

通常我們使用 func(r *T) area() int


查看完整回答
反對(duì) 回復(fù) 2021-11-01
  • 2 回答
  • 0 關(guān)注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)