[英]Mixing and matching protoc and protoc-gen-go versions
go protobuf 生成的代碼報告(省略):
// protoc-gen-go v1.25.0
// protoc. v3.5.1
import "github.com/golang/protobuf/..."
import "google.golang.org/protobuf/..."
導致go.mod
引用兩個 protobuf:
require(
github.com/golang/protobuf v1.4.3
google.golang.org/protobuf v1.25.0
)
那是猶太潔食嗎? 我的意思是它似乎有效,但它就像代碼的兩倍。
我相信,這種垃圾的根本原因是系統管理員問題(protobuf 生成器實用程序的安裝不完整且不兼容)以及 Google 不能只停留在一個 URL 的事實。
在生成的代碼中導入github.com/golang/protobuf
以允許包含以下內容:
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
此問題中有更多詳細信息 - 引用 dsnet:
新生成的.pb.go 文件依賴於棄用的原型 package 的唯一原因是對舊版 ZEFE90A8E604A7C840E88D03A67F 的足夠新版本實施弱依賴。 這是必要的,因為不是每個人都在使用 Go 模塊,因此 Go 工具鏈將強制執行此依賴關系約束。 我不喜歡添加它,但我認為至少保留幾個月可能是必要的。
根據對此問題的評論,應在版本1.26
(發布時)中刪除依賴項。
( 回答后發現了這個重復的問題,但由於我在這個答案中包含的細節比我在前一個中所做的更多,所以我將保留它)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.