我不明白 Go 变量的行为。我要你告诉我。请参阅下面的示例实现。
package main
import (
"fmt"
)
func pointer(ip *Num) {
fmt.Printf("pointer type [%T] : %p\n", &ip, &ip)
}
func pointerpointer(ip **Num) {
fmt.Printf("pointerpointer type [%T] : %p\n", ip, ip)
}
func main() {
pnum := &Num{i: 3}
fmt.Printf("main type [%T] : %p\n", &pnum, &pnum)
pointer(pnum)
pointerpointer(&pnum)
}
type Num struct {
i int
}
https://play.golang.org/p/LxDAgopxeh0
结果
main type [**main.Num] : 0x40c138
pointer type [**main.Num] : 0x40c148
pointerpointer type [**main.Num] : 0x40c138
我将 struct Num 指针存储为变量 [pnum]。将其传递给指针函数时可以获取的地址与在主函数中可以获取的地址不同。为什么??
已经证实,通过引用pointer指针作为pointer指针函数,可以获得与main函数相同的地址。
小怪兽爱吃肉
慕标5832272
慕婉清6462132
相关分类