[英]new version of protoc-gen-go drops already known types
有兩個.proto文件
第一個文件| 名稱為“ a.proto”
syntax = "proto3";
package a;
message AMsg{
fixed64 smth1 = 1;
fixed64 smth2 = 2;
}
第二檔| 名稱“ b.proto”
syntax = "proto3";
package b;
import "a.proto";
message BMsg {
a.AMsg msg1 = 1;
a.AMsg msg2 = 2;
}
protoc-gen-go的早期版本生成以下代碼:
文件“ a.pb.go”
package b
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
. . .
type AMsg struct {
smth1 uint64
smth2 uint64
}
. . .
文件“ b.pb.go”
package b
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import "a"
. . .
type BMsg struct {
msg1 *a.AMsg
msg2 *a.AMsg
}
. . .
一切都很好,
但
有一天,新版本的protoc-gen-go來了
現在, 文件“ b.pb.go”如下所示:
package b
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
. . .
type BMsg struct {
msg1 *AMsg
msg2 *AMsg
}
. . .
您可以注意到此處已經刪除了已知類型,但是我找不到原因。 (即前綴“ a”。我不見了)
此鏈接https://developers.google.com/protocol-buffers/docs/reference/go-genic並沒有說明新方法
我該怎么做才能使protoc-gen-go生成沒有這些滴的“ b.pb.go”?
go_package
選項解決了這個問題,您應該在a.proto
明確指定軟件包
像這樣:
syntax = "proto3";
package a;
option go_package= "some_path/A";
message AMsg{
fixed64 smth1 = 1;
fixed64 smth2 = 2;
}
因此您將從其他proto文件中的a.proto
獲取正確的生成類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.