为了账号安全,请及时绑定邮箱和手机立即绑定

打印指针变量

打印指针变量

Go
RISEBY 2023-03-21 17:00:35
我在下面创建了 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个赞

来自https://golang.org/pkg/fmt/

Println 格式使用其操作数的默认格式

如果要以特定方式打印,则需要使用fmt.Printf()并提供所需的格式。


查看完整回答
反对 回复 2023-03-21
?
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


查看完整回答
反对 回复 2023-03-21
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信