package main
import (
"fmt"
)
type outer struct {
in *int
}
func main() {
i := 4
o := outer{&i}
fmt.Printf("%+v", o)
}
我希望在此结尾看到{in:4},而不是{in:0x ......},即非常打印数据结构。
我想以与发布的代码类似的方式完成此操作(例如,使用类似于%+ v的fmt快捷方式或类似的解决方案)。
这适用于来自thrift结构的必需字段的自动生成的代码。
最好的方法是什么?
答案 0 :(得分:0)
当您使用&i
时,不会取消引用i
。而是引用 i
,这意味着它将i
的地址复制到o
。请参阅Address operators的文档。
从我收集的内容中,您应该可以使用*o
取消引用指针;换句话说,从地址回到原始变量。
对于指针类型* T的操作数x,指针间接* x表示由x指向的类型T的变量。如果x为nil,则尝试评估* x将导致运行时混乱。