我是新来的我想在 go 中打印结构变量的地址这是我的程序type Rect struct { width int name int }func main() { r := Rect{4,6} p := &r p.width = 15fmt.Println("-----",&p,r,p,&r)}这个的输出 _____0x40c130 {15 6} &{15 6} &{15 6}但我想打印 r 变量的地址,因为我知道 '&' 代表地址,'*' 指向指针位置的值,但在这里我无法打印 r 的地址,我使用的是在线编辑器 go-朗https://play.golang.org/我也想将这个地址存储在某个变量中。
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
当您使用 打印值时fmt.Println()
,将使用默认格式。引用包文档fmt
:
%v 的默认格式是:
bool: %t
int, int8 etc.: %d
uint, uint8 etc.: %d, %#x if printed with %#v
float32, complex64, etc: %g
string: %s
chan: %p
pointer: %p
对于复合对象,使用这些规则递归打印元素,布局如下:
struct: {field0 field1 ...}
array, slice: [elem0 elem1 ...]
maps: map[key1:value1 key2:value2 ...]
pointer to above: &{}, &[], &map[]
结构值的地址是最后一行,因此它被特殊对待并因此使用&{}语法打印。
如果你想打印它的地址,不要使用默认格式,而是使用格式字符串并用动词明确指定你想要的地址(指针)%p:
fmt.Printf("%p\n", &r)
这将输出(在Go Playground上尝试):
0x414020
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消