gpt4 book ai didi

pointers - 如何在go中打印struct变量的地址

转载 作者:IT王子 更新时间:2023-10-29 02:28:18 25 4
gpt4 key购买 nike

我是新手 我想在go中打印struct变量的地址这是我的程序

type Rect struct {
width int
name int
}

func main() {
r := Rect{4,6}
p := &r
p.width = 15

fmt.Println("-----",&p,r,p,&r)

}

这个的输出

  _____0x40c130 {15 6} &{15 6} &{15 6}

但我想打印 r 变量的地址,因为我知道 '&' 代表地址,'*' 指向指针位置的值,但在这里我无法打印 r 的地址,我使用的是在线编辑器go-lang https://play.golang.org/

此外,我想将这个地址存储在某个变量中。

最佳答案

当您使用 fmt.Println() 打印值时, 将使用默认格式。引用自 fmt 的包文档:

The default format for %v is:

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

For compound objects, the elements are printed using these rules, recursively, laid out like this:

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

关于pointers - 如何在go中打印struct变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56112289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com