我有一个变量,它等于以下结构的指针:
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时被使用,并且在memcache中断的时候我正在尝试重新建立连接,并且需要检查它以解决它。
答案 0 :(得分:0)
我不确定为什么你需要一个单独的库。直截了当的答案是你可以在结构中直接取消引用rwc
。
所以,你会做类似
的事情fmt.Printf("---*cn: %+v\n", *(cn.rwc))
答案 1 :(得分:0)
假设导入Conn
并且您无法使用标准selector expression访问未导出的字段,则可以使用reflect
包来绕过该限制。
rv := reflect.ValueOf(cn)
fmt.Println(rv.FieldByName("buf").Elem())
答案 2 :(得分:0)
您可以在https://github.com/luci/go-render包中使用{% macro render_field_oneline(field) %}
<td>{{ field.label }}</td>
<td>{{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</td>
{% endmacro %}
{% macro render_field(field) %}
<tr>
{{ render_field_oneline(field) }}
</tr>
{% endmacro %}
<style>
{
background-color: #A9A9A9;
}
table, tr, th, td {
border: 1px solid #A9A9A9;
}
</style>
函数,而不是使用*来获取指针的值,如果指针为零,则会崩溃。
然后导入库:
Render