登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-10 07:16:14 491浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在go中打印struct变量的地址》,这篇文章主要讲到golang等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我是新手 我想打印结构变量的地址 这是我的程序

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- 的在线编辑器语言https://play.golang.org/

我也想将此地址存储在某个变量中。

正确答案

当您使用 打印值时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

以上就是《如何在go中打印struct变量的地址》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表