首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用proto中的结构数组

使用proto中的结构数组
EN

Stack Overflow用户
提问于 2021-09-22 09:44:14
回答 1查看 718关注 0票数 1

由于类型不匹配,我无法调用gRPC函数

我的原始文件:

代码语言:javascript
复制
message Analytics {
    fields ...
}


message AnalyticsSet {
    repeated Analytics analytics = 1;
}

service StatService {
    rpc MyMethod(AnalyticsSet) returns (<something>) {}
}

现在,我需要叫"MyMethod“

我现在的代码是:

代码语言:javascript
复制
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)
}

在Proto文件中,"AnalyticsSet“是"Analytics”的数组,在Go代码中,"analytics“是一个类型为"Analytics”的数组,但这不足以调用"MyMethod",而且我面临类型错配的问题。

我应该如何修改go代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 11:44:48

您必须使用proto文件生成的Analytics结构--您不能使用自己的类型。

您可以在protoc文件中使用.proto文件生成所需的Go代码。下面是一个设置了gRPC生成选项的示例:

代码语言:javascript
复制
$ protoc --go_out=. --go-grpc_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative analytics.proto

proto文件应该设置go_package选项来描述生成的proto代码所属的Go导入路径。您还需要安装protoc所需的go / go-grpc生成器实用程序。

代码语言:javascript
复制
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

更多详情可参阅:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69281809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档