猿问

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

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


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/

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


SMILET
浏览 107回答 1
1回答

慕工程0101907

当您使用 打印值时fmt.Println(),将使用默认格式。引用包文档fmt:%v 的默认格式是:bool:                    %tint, int8 etc.:          %duint, uint8 etc.:        %d, %#x if printed with %#vfloat32, complex64, etc: %gstring:                  %schan:                    %ppointer:                 %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
随时随地看视频慕课网APP

相关分类

Go
我要回答