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

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

為什么字節(jié)數(shù)組的 Golang 對(duì)象屬性在分配給另一個(gè)變量時(shí)會(huì)被擦除

為什么字節(jié)數(shù)組的 Golang 對(duì)象屬性在分配給另一個(gè)變量時(shí)會(huì)被擦除

Go
蝴蝶刀刀 2021-10-25 20:29:16
使用后我們需要清除一些變量。但是當(dāng)它[]byte在結(jié)構(gòu)中分配一個(gè)字段時(shí),它看起來(lái)真的很奇怪。為什么這個(gè)賦值[]byte不是副本而是指針?我應(yīng)該怎么做才能將值保留在 struct 中a.bs,但清除bas 局部變量? http://play.golang.org/p/MT_wAHj2OMpackage mainimport "fmt"type so struct {    bs []byte}func zeroes(n int) []byte {    return make([]byte, n)}func wipeBytes(b []byte) {    copy(b, zeroes(len(b)))}func main() {    a := so{bs: []byte{0x01, 0x02}}    b := a.bs    wipeBytes(b)    fmt.Println(b)    //b == []byte{}    fmt.Println(a.bs) //a.bs == []byte{}}
查看完整描述

3 回答

?
人到中年有點(diǎn)甜

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

在聲明/創(chuàng)建“數(shù)組” ( []byte{0x01, 0x02}) 時(shí),您沒(méi)有指定長(zhǎng)度 ( [2]byte{0x01, 0x02}),這意味著它是一個(gè)切片而不是數(shù)組。并且 slices 對(duì)象在內(nèi)部包含一個(gè)指向其內(nèi)容的指針。


查看完整回答
反對(duì) 回復(fù) 2021-10-25
?
浮云間

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

切片本質(zhì)上是參考事物。分配一個(gè)不會(huì)復(fù)制其內(nèi)容。您可以將切片值視為“切片頭”結(jié)構(gòu),其中包含指向切片底層數(shù)組的指針,以及數(shù)組內(nèi)切片的偏移量和長(zhǎng)度。復(fù)制切片時(shí)復(fù)制的是這個(gè)結(jié)構(gòu),而不是數(shù)組中的任何值。


你可以做


b := make([]byte, len(a.bs)))

copy(b, a.bs)

制作b一個(gè)新切片并將a.bs的內(nèi)容復(fù)制到其中。那么你對(duì)一個(gè)人所做的任何事情都不會(huì)對(duì)另一個(gè)人產(chǎn)生任何影響。


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

添加回答

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