我很困惑为什么第 15 行无效。为什么指向 big.Int 的指针不能解除引用,而指向 int 的指针可以?
package main
import (
"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
}
最佳答案
这是因为 Int 是一个带有未导出字段的结构体。当您按值将结构传递给函数时,您正在制作它的副本。 Go spec 声明,这是合法的
关于pointers - 在 Go 中解引用指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2388909/