有两个.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。"我失踪了)
这link https://developers.google.com/protocol-buffers/docs/reference/go-generated对新方法一无所知
我应该怎样做才能让protoc-gen-产生" b.pb.go"没有这些下降?
答案 0 :(得分:0)
go_package
选项解决了这个问题,您应该在a.proto
像这样:
syntax = "proto3";
package a;
option go_package= "some_path/A";
message AMsg{
fixed64 smth1 = 1;
fixed64 smth2 = 2;
}
因此您将从其他原型文件中的a.proto
获取正确的生成类型