由于类型不匹配,我无法调用 gRPC 函数我的原型文件 :message Analytics { fields ...}message AnalyticsSet { repeated Analytics analytics = 1;}service StatService { rpc MyMethod(AnalyticsSet) returns (<something>) {}}现在,我需要叫“我的方法”我目前的代码:type Analytics struct { same fields as in proto : Analytics}analytics := make([]Analytics, 4)// .. some modifications in analytics ..._, err := c.MyMethod(context.Background(), analytics)if err != nil { log.Fatalf("error: %s", err)}在原型文件中,“AnalyticsSet”是“分析”的数组,而在Go代码中,“分析”是“分析”类型的数组,但这不足以称为“MyMethod”,并且我面临类型不匹配。我应该如何修改 go 代码?
1 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
必须使用从 proto 文件生成的结构 - 不能使用自己的类型。Analytics
您可以使用文件生成所需的 Go 代码。下面是一个设置了 gRPC 生成选项的示例:。protoc
.proto
$ protoc --go_out=. --go-grpc_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative analytics.proto
您的原型文件应设置选项来描述生成的原型代码所属的 Go 导入路径。您还需要安装以下设备所需的 go/go-grpc 发电机实用程序:go_package
protoc
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
更多详细信息,请参阅:
https://developers.google.com/protocol-buffers/docs/gotutorial
https://developers.google.com/protocol-buffers/docs/reference/go-generated
- 1 回答
- 0 关注
- 66 浏览
添加回答
举报
0/150
提交
取消