首页 > 解决方案 > Go protobuf 包冲突

问题描述

您好我正在尝试用 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"
)

标签: goprotocol-buffers

解决方案


文件有效;请参阅 dsnet对此问题的评论:

新生成的 .pb.go 文件依赖于已弃用的 proto 包的唯一原因是对旧包的足够新版本强制执行弱依赖。这是必要的,因为不是每个人都在使用 Go 模块,因此 Go 工具链会强制执行此依赖约束。我不喜欢添加它,但我认为至少保留几个月可能是必要的。


推荐阅读