ZBLOG

undeclared name: mvccpb怎么解决

undeclared name: mvccpb 错误通常是由于缺少引入相关的包或版本不兼容等问题导致的。在使用 etcd 的 watch 功能时,需要引入 go.etcd.io/etcd/mvcc/mvccpb 包才能正确使用 mvccpb.PUTmvccpb.DELETE 等常量。

修改代码如下:

import (
    "context"
    "fmt"
    "go.etcd.io/etcd/clientv3"
    "go.etcd.io/etcd/mvcc/mvccpb" // 引入 mvccpb 包
)

func main() {
    cli, err := clientv3.New(clientv3.Config{
        Endpoints:   []string{"localhost:2379"}, // etcd 地址
    })
    if err != nil {
        // 错误处理
    }
    defer cli.Close() // 关闭连接

    watcher := clientv3.NewWatcher(cli)

    ch := watcher.Watch(context.Background(), "key")

    for resp := range ch {
        for _, ev := range resp.Events {
            switch ev.Type {
            case mvccpb.PUT:
                fmt.Printf("PUT: %s %q : %q\n", ev.Kv.Key, ev.Kv.Value, ev.PrevKv.Value)
            case mvccpb.DELETE:
                fmt.Printf("DELETE: %s : %q\n", ev.Kv.Key, ev.PrevKv.Value)
            }
        }
    }
}

以上代码中,我们加入了 go.etcd.io/etcd/mvcc/mvccpb 包,并在 switch 语句中正确地使用了 mvccpb.PUTmvccpb.DELETE 等常量。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4948

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?