我在下面创建了 2 个 Vertex 对象——q 和 q。现在,当我打印指针变量 q = &Vertex 时,我希望它是内存地址,为什么它打印 - &{1,2}输出:{1 2} &{1 2}程序:package mainimport "fmt"type Vertex struct { X, Y int}var ( p = Vertex{1, 2} // has type Vertex q = &Vertex{1, 2} // has type *Vertex)func main() { fmt.Println(p, q)}操场
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
Smart猫小萌
TA贡献1911条经验 获得超7个赞
函数fmt.Println(...)
“ [使用]其操作数的默认格式”并根据fmt
包头文档:
%v the value in a default format
...
struct: {field0 field1 ...}
...
pointer to above: &{}, &[], &map[]
所以以下几行实际上是相同的:
fmt.Println(p, q)
fmt.Printf("%v %v\n", p, q)
如果你想打印指针的内存地址,那么你应该使用%p格式动词:
Pointer:
%p base 16 notation, with leading 0x
例如:
fmt.Printf("%p\n", q) // => 0x1953e4
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消