问题描述
我正在使用以下命令为 golang 生成 proto 代码:
protoc --go_out=../generated --go_opt=paths=source_relative \
--go-grpc_out=../generated --go-grpc_opt=paths=source_relative \
*.proto
我使用内置的 google/protobuf/struct.proto 来处理非结构化数据。但是,我收到一条错误消息,指出未定义“google.protobuf.Struct”。
解决方法
protoc
包含 ./bin
和 ./include
目录。
./include
应该包括例如google/protobuf/struct.proto
。
如果您将 PATH
正确设置为 ./protoc../bin
,struct.proto
应包含在编译中。
示例
go.mod
:
module github.com/some/test
go 1.16
require google.golang.org/protobuf v1.26.0
test.proto
:
syntax = "proto3";
package test;
import "google/protobuf/struct.proto";
option go_package = "github.com/some/test;test";
message SomeRequest {
google.protobuf.Struct some_struct = 1;
}
那么:
protoc \
--go_out=. \
--go_opt=module=github.com/some/test \
test.proto