我试图学习go并且一直没事,但我遇到了我无法理解的行为。我想这与etcd没关系?
所以,我有一个键/值的etcd v3设置。当我用' get' (参见here)我希望能够使用以下方法检索我的值:
fmt.Println(resp.Kvs.Value)
但是,这不起作用,我必须按照示例(在上面的链接中)执行它并循环显示单个结果以显示它:
for _, ev := range resp.Kvs {
fmt.Printf("%s : %s\n", ev.Key, ev.Value)
}
请您帮助我理解为什么直接检索这个值是不可能的,以及是什么让环路变得必要?
答案 0 :(得分:1)
无论您是获得单个密钥还是多个密钥,响应对象都是相同的,因此即使返回的总计数为1,它也必须提供多个结果。如果您知道只有一个结果,你没有义务循环它,你可以参考第一个结果:
resp.Kvs[0].Value
当然,你应该先确定是否有结果(len(resp.Kvs) > 0
),否则会引起恐慌。