由于类型不匹配,我无法调用gRPC函数
我的原始文件:
message Analytics {
fields ...
}
message AnalyticsSet {
repeated Analytics analytics = 1;
}
service StatService {
rpc MyMethod(AnalyticsSet) returns (<something>) {}
}现在,我需要叫"MyMethod“
我现在的代码是:
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代码?
发布于 2021-09-22 11:44:48
您必须使用proto文件生成的Analytics结构--您不能使用自己的类型。
您可以在protoc文件中使用.proto文件生成所需的Go代码。下面是一个设置了gRPC生成选项的示例:
$ protoc --go_out=. --go-grpc_out=. --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative analytics.protoproto文件应该设置go_package选项来描述生成的proto代码所属的Go导入路径。您还需要安装protoc所需的go / go-grpc生成器实用程序。
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest更多详情可参阅:
https://stackoverflow.com/questions/69281809
复制相似问题