首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在go中打印结构变量的地址

如何在go中打印结构变量的地址
EN

Stack Overflow用户
提问于 2019-05-13 20:23:37
回答 1查看 9.2K关注 0票数 8

我是个新手,我想在go中打印结构变量的地址,这是我的程序

代码语言:javascript
复制
type Rect struct {
 width int
 name int 
}

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

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

}

这个输出

代码语言:javascript
复制
  _____0x40c130 {15 6} &{15 6} &{15 6}

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

我还想把这个地址存储在某个变量中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-13 20:28:43

使用fmt.Println()打印值时,将使用默认格式。引用fmt的封装文档

%v的默认格式为:

布尔:%t int、int8等:%d uint、uint8等:%d、%#x,如果使用%#v float32、complex64等打印:%g字符串:%s chan:%p指针:%p

对于复合对象,使用这些规则以递归方式打印元素,布局如下:

结构:{field0 field1 ...}数组,切片: elem0 elem1 ...映射: mapkey1:value1 key2:value2...指向上面的指针:&{},&[],&map[]

结构值的地址是最后一行,因此它被视为特殊的,因此使用&{}语法打印。

如果要打印其地址,请不要使用默认格式,而是使用格式字符串,并使用%p动词显式指定要打印的地址(指针):

代码语言:javascript
复制
fmt.Printf("%p\n", &r)

这将输出(在Go Playground上试用):

代码语言:javascript
复制
0x414020
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56112289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档