我正在學習圍棋,我嘗試了'&'來獲取內存地址。但是我不知道'&i'是什么意思,'i'來自i := &b,b是一個int。b := 7i := &bfmt.Println(&b) //print => 0xc000088000fmt.Println(i) //print => 0xc000088000fmt.Println(&i) //print => 0xc00000e018在這種情況下,'&i' 的含義是什么?
3 回答

ITMISS
TA貢獻1871條經驗 獲得超8個贊
&
是地址運算符,評估它會得到一個內存地址,當傳遞給包時fmt
,內存地址通常以十六進制格式打印(“base 16 notation, with leading 0x”)。
內存地址就是:內存地址。int
它是變量的地址還是 a?string
,或者指針類型的變量都沒有關系。打印時,它們看起來都“相同”。
地址運算符:
x
對于類型的操作數T
,尋址操作&x
生成一個*T
指向類型的指針x
。
所以地址運算符給你一個指針值,當你取消引用時,你會得到原始值。
&b
將是變量的地址b
,類型為*int
,當您取消引用時:*b
將為您提供(的值)b
。
&i
i
將是類型為 的變量的地址**int
,當您取消引用時:*i
將為您提供的值i
是 的地址b
。因此,如果您還取消引用 that:?**(&i)
,那也會給您 (的價值)?b
。

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
所以&
運算符生成一個指向它的操作數的指針。所以&i
基本上生成一個指針,i
它已經是一個指針b
,它只是一個內存地址。所以當你這樣做時,fmt.Println(&i)
它會打印出i
.
- 3 回答
- 0 關注
- 264 瀏覽
添加回答
舉報
0/150
提交
取消