在原型中使用结构数组

由于类型不匹配,我无法调用 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 代码?


偶然的你
浏览 67回答 1
1回答

POPMUISE

必须使用从 proto 文件生成的结构 - 不能使用自己的类型。Analytics您可以使用文件生成所需的 Go 代码。下面是一个设置了 gRPC 生成选项的示例:。protoc.proto$&nbsp;protoc&nbsp;--go_out=.&nbsp;--go-grpc_out=.&nbsp;--go_opt=paths=source_relative&nbsp;--go-grpc_opt=paths=source_relative&nbsp;analytics.proto您的原型文件应设置选项来描述生成的原型代码所属的 Go 导入路径。您还需要安装以下设备所需的 go/go-grpc 发电机实用程序:go_packageprotoc$&nbsp;go&nbsp;install&nbsp;google.golang.org/protobuf/cmd/protoc-gen-go@latest $&nbsp;go&nbsp;install&nbsp;google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest更多详细信息,请参阅:https://developers.google.com/protocol-buffers/docs/gotutorialhttps://developers.google.com/protocol-buffers/docs/reference/go-generatedhttps://grpc.io/docs/languages/go/quickstart/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go