package main
import "fmt"
type Employee struct {
ID int
Name string
}
func main(){
var zhexiao Employee
zhexiao.Name = "xiao"
fmt.Println(&zhexiao)
x := 1
p := &x
fmt.Println(p)
}
以上代码输出两种指针。
- 结构指针输出为:
&{0 xiao}
- 整数指针输出为:
0xc0420600b0
(看起来像内存地址)
为什么struct pointer输出的不是内存地址?如果不是内存地址,那是什么?
非常感谢 哲
最佳答案
这取决于你如何看待它。您正在隐式使用程序包 fmt
默认打印动词 (%v
)。以下是通过显式使用其他打印动词来查看它的其他一些方法。
package main
import "fmt"
type Employee struct {
ID int
Name string
}
func main() {
var zhexiao Employee
zhexiao.Name = "xiao"
fmt.Printf("%[1]v %[1]p\n", &zhexiao)
x := 1
fmt.Printf("%[1]v %[2]p\n", x, &x)
p := &x
fmt.Printf("%[1]v %[1]p\n", p)
}
Playground :https://play.golang.org/p/4dV8HtiS8rP
输出:
&{0 xiao} 0x1040a0d0
1 0x1041402c
0x1041402c 0x1041402c
关于pointers - 结构指针和整数指针输出有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51093238/