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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang - 如何在保持內(nèi)存地址的情況下將結(jié)構(gòu)添加到切片?

Golang - 如何在保持內(nèi)存地址的情況下將結(jié)構(gòu)添加到切片?

Go
侃侃無極 2023-01-03 16:58:53
如下所示,我創(chuàng)建實(shí)例并添加到切片中。我想保留實(shí)例的內(nèi)存地址,但事實(shí)并非如此。type Person struct {    name string}func main() {    p := Person{name: "foo"}    ps1 := []Person{p}    ps2 := []Person{p}        fmt.Printf("%p\n", &p) // 0xc000010250    fmt.Printf("%p\n", &ps1[0]) // 0xc000010260    fmt.Printf("%p\n", &ps2[0]) // 0xc000010270}我知道如果我使用指針和指針切片是可能的。type Person struct {    name string}func main() {    p := Person{name: "foo"}    ps1 := []*Person{&p}    ps2 := []*Person{&p}    fmt.Printf("%p\n", &p) // 0xc00010a210    fmt.Printf("%p\n", ps1[0]) // 0xc00010a210    fmt.Printf("%p\n", ps2[0]) // 0xc00010a210}但是,我想將 ps1 和 ps2 作為 []Person 的類型,因?yàn)閷⒆裱姆椒ǖ膮?shù)類型(不在這里)。有什么辦法嗎?
查看完整描述

2 回答

?
慕村225694

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

Go 程序中定義的每個變量都占據(jù)一個唯一的內(nèi)存位置。不可能創(chuàng)建一個 Go 程序,其中兩個變量在內(nèi)存中共享相同的存儲位置。可以創(chuàng)建兩個內(nèi)容指向相同存儲位置的變量,但這與共享相同存儲位置的兩個變量不同。

ps1[0]所以簡而言之,不,如果你想ps2[0]指向內(nèi)存中的同一個位置,你必須使用[]*Person


查看完整回答
反對 回復(fù) 2023-01-03
?
qq_笑_17

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

不,你不能。切片是一個連續(xù)的內(nèi)存塊。局部變量被分配到任意可用的內(nèi)存地址。mySlice[0]并且mySlice[1]將始終在相鄰的內(nèi)存中,它們不能每個指向恰好分配了不同局部變量的某個隨機(jī)位置。

我想保留實(shí)例的內(nèi)存地址

在實(shí)踐中沒有理由需要或想要這個。如果你認(rèn)為你需要這個,你應(yīng)該回顧你的推理并確定你真正需要什么。


查看完整回答
反對 回復(fù) 2023-01-03
  • 2 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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