如何访问指向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休息我试图重新建立连接来检查这一点,需要检查这个来解决它。
答
我不确定为什么你需要一个单独的库。直接的答案是,您可以直接在结构中取消引用rwc
。
所以,你会做类似
fmt.Printf("---*cn: %+v\n", *(cn.rwc))
答
假设Conn
是进口的,你没有访问与标准不导出字段selector expression可以使用reflect
包绕过这个限制。
rv := reflect.ValueOf(cn)
fmt.Println(rv.FieldByName("buf").Elem())
答
您可以通过使用*如果指针是零,这将崩溃在https://github.com/luci/go-render包中使用Render
功能,而不是采取指针的值。
刚刚导入库,然后:
fmt.Printf("Connection: %v", render.Render(<your variable>))
使用像库[喷涌](https://github.com/davecgh/go-spew)。 –
嗯...有没有这个我怎么能这样做的任何意见? – jj1111