登录
首页 >  Golang >  Go问答

Go protobuf 包冲突

来源:stackoverflow

时间:2024-03-17 17:51:23 284浏览 收藏

Go protobuf 包冲突问题解决方案: Go 语言 protobuf 文件生成中,有时会遇到来自不同源的冲突包。尽管 Google.golang.org 包已取代 Github.com 包,但冲突的文件仍然有效。这是因为弃用的 Github.com 包被强制依赖,以确保与旧版本的兼容性。这种依赖关系是临时的,未来可能会被移除。

问题内容

嗨,我正在尝试用 go 语言生成简单的 protobuf 文件

syntax = "proto3";

package gen;

message evtkeepalive
{

   string svcname   = 2;

}

在标头中,我看到该包使用两种不同的 proto go 实现,一种来自 github.com,另一种来自 google.golang.org。据我了解后者取代了前者,那么这个文件生成有效吗?

// versions:
//  protoc-gen-go v1.25.0-devel
//  protoc        v3.13.0
// source: common.proto

package gen

import (
    proto "github.com/golang/protobuf/proto"
    protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    reflect "reflect"
    sync "sync"
)

解决方案


文件有效;参见dsnet回复this issue的评论:

新生成的 .pb.go 文件依赖于 已弃用的 proto 包是为了强制弱依赖 旧包的足够新版本。这是必要的 因为并不是每个人都使用 Go 模块,因此 Go 工具链 将强制执行此依赖性约束。本来就不喜欢加这个 但我认为可能至少需要保存几个月。

今天关于《Go protobuf 包冲突》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>