如何访问指向Struct的值?

问题描述:

我有一个变量,它等于以下结构的指针:如何访问指向Struct的值?

type Conn struct { 
    rwc io.ReadWriteCloser 
    l sync.Mutex 
    buf *bytes.Buffer 
} 

因此

fmt.Printf("---*cn: %+v\n", *cn) 

回报

{rwc:0xc42000e080 l:{state:0 sema:0} buf:0xc42005db20} 

我怎么能看到的价值地址0xc42000e080和0xc42005db20?

我的最终目标是因为它连接到内存缓存时使用,并在机会的memcache休息我试图重新建立连接来检查这一点,需要检查这个来解决它。

+0

使用像库[喷涌](https://github.com/davecgh/go-spew)。 –

+0

嗯...有没有这个我怎么能这样做的任何意见? – jj1111

我不确定为什么你需要一个单独的库。直接的答案是,您可以直接在结构中取消引用rwc

所以,你会做类似

fmt.Printf("---*cn: %+v\n", *(cn.rwc)) 

假设Conn是进口的,你没有访问与标准不导出字段selector expression可以使用reflect包绕过这个限制。

rv := reflect.ValueOf(cn) 
fmt.Println(rv.FieldByName("buf").Elem()) 

https://play.golang.org/p/-6lWi1vYod

您可以通过使用*如果指针是零,这将崩溃在https://github.com/luci/go-render包中使用Render功能,而不是采取指针的值。

刚刚导入库,然后:

fmt.Printf("Connection: %v", render.Render(<your variable>))