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

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

Golang 在修改/寫入時(shí)復(fù)制字符串嗎?

Golang 在修改/寫入時(shí)復(fù)制字符串嗎?

Go
呼如林 2023-07-10 17:23:07
鑒于下面的示例,幕后實(shí)際發(fā)生了什么?package mainimport "fmt"func main() {? s := "Hello"? t := s // t shares the same data as s? s += "World" // a new string is created? t += "There" // a new string is created.? fmt.Printf("%s %s\n", s, t)}輸出:HelloWorld HelloThere問(wèn)題是golang什么時(shí)候會(huì)判斷需要?jiǎng)?chuàng)建新的副本呢?
查看完整描述

2 回答

?
慕無(wú)忌1623718

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

在 Go 中,字符串值是read-only字節(jié)切片,您無(wú)法更改其元素(不可變)。由于它是一個(gè)切片,因此意味著它有一個(gè)已定義容量的支持(底層)數(shù)組。話雖這么說(shuō),我們可以說(shuō)字符串是一個(gè)指向只讀后備數(shù)組的數(shù)據(jù)結(jié)構(gòu)。

字符串針對(duì)高可重用性進(jìn)行了優(yōu)化,因此是只讀的。每當(dāng)您修改字符串時(shí),都會(huì)在后臺(tái)創(chuàng)建一個(gè)新字符串(字節(jié)切片),這使得操作成本較高。一項(xiàng)建議是將字符串轉(zhuǎn)換為實(shí)際的字節(jié)切片[]byte(string)并使用字節(jié),或者當(dāng)程序需要執(zhí)行大量字符串操作時(shí)使用strings.Builder 。

s := "Hello" // backing array for "hello" created; `s` points to the backing array

t := s // `t` a new string structure and points to the same backing array as `s`,?

s += "World" // new backing array created for "HelloWorld"; `s` points to the new backing array

t += "There" // `t` was still pointing to "Hello" and with this operation, a new backing array is created for "HelloThere" and `t` points to it


查看完整回答
反對(duì) 回復(fù) 2023-07-10
?
喵喵時(shí)光機(jī)

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

經(jīng)過(guò)評(píng)論部分對(duì)此進(jìn)行了大量辯論/討論后,這是我的結(jié)論。

Golang 沒(méi)有寫時(shí)復(fù)制。

這里的+=是顯式創(chuàng)建一個(gè)新字符串,相當(dāng)于s = s + "World"創(chuàng)建一個(gè)新字符串并將其分配回s

如果你嘗試編寫以下代碼,由于 Golang 字符串的不可變性,將會(huì)導(dǎo)致編譯錯(cuò)誤

t[0] = 'A' // cannot assign to t[0]

因此,Golang 中的所有內(nèi)容都是顯式的,Golang 沒(méi)有隱式執(zhí)行任何操作。這就是 Golang 中不存在寫時(shí)復(fù)制的原因。

注意:COW 和不變性并不相互排斥。


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

添加回答

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