【问题标题】:What's the difference between struct pointer and integer pointer output?结构指针和整数指针输出有什么区别?
【发布时间】:2018-06-29 01:48:59
【问题描述】:
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)
}

以上代码输出两种指针。

  1. 结构指针输出为:&{0 xiao}
  2. 整数指针输出为:0xc0420600b0(看起来像内存地址)

为什么struct指针输出不是内存地址?如果不是内存地址,那是什么?

非常感谢 哲

【问题讨论】:

标签: pointers go


【解决方案1】:

这取决于你如何看待它。您正在隐式使用包 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)
}

游乐场:https://play.golang.org/p/4dV8HtiS8rP

输出:

&{0 xiao} 0x1040a0d0
1 0x1041402c
0x1041402c 0x1041402c

参考:Package fmt: Printing

【讨论】:

  • 亲爱的,非常感谢。这让我困惑了很长时间。但现在我明白了。哈哈。再次感谢。
猜你喜欢
  • 2011-04-04
  • 2010-12-17
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多