小编hyp*_*low的帖子

具有 0 个元素的重复字段会导致客户端为零

问题:

我想知道为什么当服务器响应字段上的空切片时,我在 gRPC 客户端上得到nilrepeated值?

是否有任何参考/文档明确描述此行为?


考虑以下示例:

简单的原型文件定义:

syntax = "proto3";

option go_package = "testdata";

service Greeter {
    rpc Hello (HelloRequest) returns (HelloResponse) {}
}

message HelloRequest {
    string name = 1;
}

message HelloResponse {
    repeated string greetings = 1;
}
Run Code Online (Sandbox Code Playgroud)

迎宾服务实施:

type Hello struct{}

func (*Hello) Hello(ctx context.Context, req *pb.HelloRequest) (*pb.HelloResponse, error) {
    return &pb.HelloResponse{
        Greetings: []string{}, // Note: a slice with 0 elements (not nil slice)
    }, nil
}
Run Code Online (Sandbox Code Playgroud)

服务器实现:

srv := grpc.NewServer()
pb.RegisterGreeterServer(srv, &Hello{}) …
Run Code Online (Sandbox Code Playgroud)

go protocol-buffers grpc

6
推荐指数
0
解决办法
2128
查看次数

标签 统计

go ×1

grpc ×1

protocol-buffers ×1