etcd go clientv3 - 为什么我不能在没有循环结果的情况下得到一个值

时间:2017-07-31 13:50:33

标签: go etcd

我试图学习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)
}

请您帮助我理解为什么直接检索这个值是不可能的,以及是什么让环路变得必要?

1 个答案:

答案 0 :(得分:1)

无论您是获得单个密钥还是多个密钥,响应对象都是相同的,因此即使返回的总计数为1,它也必须提供多个结果。如果您知道只有一个结果,你没有义务循环它,你可以参考第一个结果:

resp.Kvs[0].Value

当然,你应该先确定是否有结果(len(resp.Kvs) > 0),否则会引起恐慌。