我對第15行無效的原因感到困惑。為什么不能取消指向big.Int的指針,而可以取消指向int的指針?package mainimport ( "fmt" "big")func main() { var c *int = getPtr() fmt.Println(c) fmt.Println(*c) var d *big.Int = big.NewInt(int64(0)) fmt.Println(d) // does not compile - implicit assignment of big.Int // field 'neg' in function argument //fmt.Println(*d)}func getPtr() *int { var a int = 0 var b *int = &a return b}
1 回答

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
這是因為Int是具有未導出字段的結構。當按值將結構傳遞給函數時,就是在對其進行復制。在圍棋規范指出,這個是合法的
...要么必須導出T的所有字段,要么賦值必須在聲明T的同一包中。換句話說,僅當程序的每個字段都可以合法地分配結構的每個字段時,才可以將結構值分配給結構變量。
- 1 回答
- 0 關注
- 310 瀏覽
添加回答
舉報
0/150
提交
取消