在訪問 struct fields 時(shí),我不明白 struct 文字和 struct 指針之間的區(qū)別。有什么不同的內(nèi)部行為嗎?type Person struct { Name string}p := &Person{Name: "Alice"}u := Person{Name: "Bob"}fmt.Println(p.Name) // any difference ?fmt.Println(u.Name) // any difference ?我搜索了這個(gè),但我發(fā)現(xiàn)所有帖子都解釋了值和指針之間的區(qū)別,或者“傳遞一個(gè)值”與“傳遞一個(gè)指針”到一個(gè)方法。他們不是我想知道的。
1 回答

慕仙森
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
u
是一個(gè)類型的變量Person
。p
是一個(gè)“指向Person
”類型的變量,它用匿名(“臨時(shí)”)對(duì)象的地址初始化。該表達(dá)式p.Name
使用指針的自動(dòng)取消引用,等效于(*p).Name
. 指向它的對(duì)象p
只要p
指向它就存在,并且此后可能會(huì)被 Go 的非確定性內(nèi)存管理器銷毀。
這兩個(gè)p.Name
和u.Name
的類型的表達(dá)式string
,而他們沒有“的指針傳遞”,因?yàn)樗麄兊牡刂凡粊黼姷摹T?的情況下fmt.Println
,該值實(shí)際上是使用 Go 的臨時(shí)多態(tài)性結(jié)構(gòu)子類型形式“通過接口”傳遞的。
- 1 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)
0/150
提交
取消