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

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

字符串復(fù)制內(nèi)存地址的 Golang 內(nèi)存分配

字符串復(fù)制內(nèi)存地址的 Golang 內(nèi)存分配

Go
qq_笑_17 2022-10-31 15:49:16
我目前正在閱讀 Go 編程語言書,該書描述了字符串或子字符串的副本具有相似的內(nèi)存地址。s := "hello"c := sfmt.Println(&s, &c) // prints 0xc000010230 0xc000010240我的問題是,不應(yīng)該&c和&s因?yàn)樗點(diǎn)是一個(gè)精確的副本一樣嗎?               RAM      Address    |     Value &s 0xc000010230 |    "hello" <----- s &c 0xc000010240 |    "hello" <----- c
查看完整描述

1 回答

?
嚕嚕噠

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

c并且s實(shí)際上是兩個(gè)不同的字符串標(biāo)題。但他們都指向同一個(gè)"hello"。


sh := (*reflect.StringHeader)(unsafe.Pointer(&s))

ch := (*reflect.StringHeader)(unsafe.Pointer(&c))

fmt.Println(sh.Data, ch.Data)

https://go.dev/play/p/Ckl0P3g4nVo


字符串頭的Data字段指向字符串中的第一個(gè)byte,字符串頭的Len字段表示字符串的長(zhǎng)度。您可以使用該信息來確認(rèn)字符串標(biāo)頭是否指向原始字符串。


sh := (*reflect.StringHeader)(unsafe.Pointer(&s))

for i := 0; i < sh.Len; i++ {

    sp := (*byte)(unsafe.Pointer(sh.Data + uintptr(i)))

    fmt.Printf("%p = %c\n", sp, *sp)

}

https://go.dev/play/p/LFfdxxARw1f


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

添加回答

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