Const 初始值设定项 'protoimpl.EnforceVersion(20 - protoimpl.MinVersion)' 不是常量

Const initializer 'protoimpl.EnforceVersion(20 - protoimpl.MinVersion)' is not a constant

我是 gRPC 的新手,尝试从 protos 生成 go 代码并在生成的文件上遇到此错误

生成的代码有问题:

//  protoc-gen-go v1.25.0
//  protoc        v3.12.3
const (
    // Verify that this generated code is sufficiently up-to-date.
    _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    // Verify that runtime/protoimpl is sufficiently up-to-date.
    _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

错误

Const initializer 'protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)' is not a constant

版本:

$ sw_vers                                                                                                                                                                                                 (sadc1c/opsvisibility)
ProductName:    Mac OS X
ProductVersion: 10.15.3
BuildVersion:   19D76

$ go version
go version go1.14 darwin/amd64

$ protoc --version                                                                                                                                                                                        (sadc1c/opsvisibility)
libprotoc 3.12.3

原因是软件包版本错误 google.golang.org/protobuf 解决方案是获取最新版本

go get -u google.golang.org/protobuf/proto

来源:https://developers.google.com/protocol-buffers/docs/reference/go/faq#enforce-version