Pointers 结构指针和整数指针输出之间有什么区别?

Pointers 结构指针和整数指针输出之间有什么区别?,pointers,go,Pointers,Go,上面的代码输出两种指针 结构指针输出为:&{0} 整数指针输出为:0xc0420600b0它看起来像一个内存地址 为什么结构指针输出不是内存地址?如果不是内存地址,它是什么 非常感谢 这取决于你如何看待它。您正在隐式使用包fmt默认打印谓词%v。下面是通过显式使用其他打印动词来查看它的一些其他方法 package main import "fmt" type Employee struct { ID int Name string } func main(){ va

上面的代码输出两种指针

结构指针输出为:&{0} 整数指针输出为:0xc0420600b0它看起来像一个内存地址 为什么结构指针输出不是内存地址?如果不是内存地址,它是什么

非常感谢
这取决于你如何看待它。您正在隐式使用包fmt默认打印谓词%v。下面是通过显式使用其他打印动词来查看它的一些其他方法

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)
}
游乐场:

输出:

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)
}

参考资料:

亲爱的,非常感谢。这让我困惑了很长时间。但现在我明白了。LOL.再次感谢。fmt.Println不适合检查内部构件。阅读语言规范。可能的副本:;和
&{0 xiao} 0x1040a0d0
1 0x1041402c
0x1041402c 0x1041402c