gpt4 book ai didi

go - 新版本的 protoc-gen-go 删除了已知的类型

转载 作者:IT王子 更新时间:2023-10-29 02:20:48 32 4
gpt4 key购买 nike

有两个.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-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;
}

所以你会在其他原型(prototype)文件中从 a.proto 获得正确的生成类型

关于go - 新版本的 protoc-gen-go 删除了已知的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50532446/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com