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

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

通過(guò)值或指針訪問(wèn)另一個(gè)結(jié)構(gòu)

通過(guò)值或指針訪問(wèn)另一個(gè)結(jié)構(gòu)

Go
揚(yáng)帆大魚(yú) 2021-04-08 18:15:04
通過(guò)值或指針訪問(wèn)另一個(gè)結(jié)構(gòu)有什么區(qū)別?什么時(shí)候應(yīng)該使用它們中的每一個(gè)?type foo_ struct {    st uint8    nd uint8}type bar struct {    rd  uint8    foo foo_}type barP struct {    rd  uint8    foo *foo_}
查看完整描述

3 回答

?
至尊寶的傳說(shuō)

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

Golang FAQ現(xiàn)在總結(jié)的區(qū)別:

func (s *MyStruct) pointerMethod() { } // method on pointer
func (s MyStruct)  valueMethod()   { } // method on value

首先,也是最重要的一點(diǎn),該方法是否需要修改接收器?
如果是這樣,則接收者必須是一個(gè)指針。(切片和地圖是引用類型,因此它們的故事有些微妙,但是例如,要在方法中更改切片的長(zhǎng)度,接收方仍必須是指針。)
在上面的示例中,如果pointerMethod修改的字段s,調(diào)用方將看到這些更改,但是valueMethod會(huì)調(diào)用方參數(shù)的副本(即傳遞值的定義)進(jìn)行調(diào)用,因此,所做的更改對(duì)于調(diào)用方將是不可見(jiàn)的。
順便說(shuō)一下,指針接收器與Java中的情況相同,盡管在Java中指針隱藏在幕后。Go的價(jià)值接收者非同尋常。

其次是對(duì)效率的考慮。如果接收器很大,例如一個(gè)大的結(jié)構(gòu),那么使用指針接收器會(huì)便宜得多。

(此效率點(diǎn)在“內(nèi)存,內(nèi)存中的變量和指針”中也有說(shuō)明)

其次是一致性。如果類型的某些方法必須具有指針接收器,則其余的方法也應(yīng)具有指針接收器,因此無(wú)論如何使用該類型,方法集都是一致的。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)方法集部分。


查看完整回答
反對(duì) 回復(fù) 2021-04-26
?
牛魔王的故事

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

答案很大程度上與語(yǔ)言無(wú)關(guān)-C語(yǔ)言中的等效內(nèi)容存在相同的問(wèn)題。

當(dāng)您具有內(nèi)含價(jià)值時(shí)(如所示bar),則您的結(jié)構(gòu)足夠大,可以容納完整的子結(jié)構(gòu)和另一部分。

當(dāng)您有一個(gè)指向值的指針時(shí)(如barP),那么許多類型的結(jié)構(gòu)barP可能共享相同的foo。當(dāng)其中任何一個(gè)barP修改foo指向它的一部分時(shí),它將影響barP指向同一位置的所有其他結(jié)構(gòu)。另外,正如注釋所建議的那樣,您必須管理兩個(gè)單獨(dú)的對(duì)象-thebarPfooas與普通bar類型的對(duì)象相對(duì)。

在某些語(yǔ)言中,您將不得不擔(dān)心懸空的指針和未初始化的值等。Go是垃圾收集的,并且通常比其他語(yǔ)言更類型安全。

因此,當(dāng)您希望多個(gè)barP對(duì)象共享同一foo對(duì)象時(shí),請(qǐng)使用指針。否則,請(qǐng)使用顯式成員對(duì)象,而不是指向?qū)ο蟮闹羔槨?/p>


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

添加回答

舉報(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)