如何打印取消引用的字段值而不显式指定该字段golang

时间:2018-02-06 23:04:16

标签: pointers go thrift

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结构的必需字段的自动生成的代码。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

当您使用&i时,不会取消引用i。而是引用 i,这意味着它将i的地址复制到o。请参阅Address operators的文档。

从我收集的内容中,您应该可以使用*o 取消引用指针;换句话说,从地址回到原始变量。

  

对于指针类型* T的操作数x,指针间接* x表示由x指向的类型T的变量。如果x为nil,则尝试评估* x将导致运行时混乱。