问题:
我想知道为什么当服务器响应字段上的空切片时,我在 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)