我是个新手,我想在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-lang https://play.golang.org/的在线编辑器
我还想把这个地址存储在某个变量中。
发布于 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动词显式指定要打印的地址(指针):
fmt.Printf("%p\n", &r)这将输出(在Go Playground上试用):
0x414020https://stackoverflow.com/questions/56112289
复制相似问题