etcd invalid case...
问题描述
使用etcd报如下错误怎么解决的?
invalid case "go.etcd.io/etcd/mvcc/mvccpb".PUT in switch on event.Type (mismatched types "go.etcd.io/etcd/mvcc/mvccpb".Event_EventType and "github.com/coreos/etcd/mvcc/mvccpb".Event_EventType)
同一个包下的为什么会报类型不匹配呢?
相关代码
package main
import (
"context"
"fmt"
"go.etcd.io/etcd/clientv3"
"go.etcd.io/etcd/mvcc/mvccpb"
)
func main() {
var (
watcher clientv3.Watcher
watchStartReversion int64
getResp *clientv3.GetResponse
watchRespChan <-chan clientv3.WatchResponse
)
watchStartReversion = getResp.Header.Revision + 1
watchRespChan = watcher.Watch(context.TODO(), "/add/user", clientv3.WithRev(watchStartReversion))
for watchResp = range watchRespChan {
for _, event = range watchResp.Events {
switch event.Type {
case mvccpb.PUT:
fmt.Println("add:", string(event.Kv.Value), "Reversion:", event.Kv.CreateRevision, event.Kv.ModRevision)
case mvccpb.DELETE:
fmt.Println("delete:", "Reversion:", event.Kv.ModRevision)
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是因为你导入的包不对。
你 import 的
go.etcd.io/etcd/clientv3
引用的是go.etcd.io/etcd/mvcc/mvccpb
, 但是在 switch 那里你应用了github.com/coreos/etcd/mvcc/mvccpb
,在 import 那里换一下试试吧。这个是 go 的一个特性,可能两个代码库是同一个,但是 golang 在编译时会当成两个,并认为是不一样的。