我在q&q下创建了2个Vertex对象。
现在,当我打印指针变量q =&Vertex时,我希望它是内存地址,为什么要打印-&{1,2}
输出:
{1 2} &{1 2}
程序:
package main
import "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)
}
答案 0 :(得分:2)
答案 1 :(得分:1)
fmt.Println(...)
function“ [使用]其操作数的默认格式”,并根据fmt
package header documentation:
%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