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

是否可以使用 Google Classroom Go API 来评论事物?

是否可以使用 Google Classroom Go API 来评论事物?

Go
SMILET 2023-06-19 14:08:44
我是新来的我想在 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


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

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