在下面的gRPC客户端代码中,第二个是if必要的吗?
status, err := cli.GetStatus(ctx, &empty.Empty{})
if err != nil {
return err
}
if status == nil {
// this should NEVER happen - right?
return fmt.Errorf("nil Status result returned")
}
go 直觉上,为了以防万一,应该总是检查 nil 。但是,有一个运行时检查来捕获任何客户端到服务器的nil使用,例如
status, err := cli.GetStatus(ctx, nil) // <- runtime error
if err != nil {
// "rpc error: code = Internal desc = grpc: error while marshaling: proto: Marshal called with nil"
return err
}
那么是否有类似的服务器到客户端运行时保证,从而消除检查的需要status == nil?
ITMISS
小唯快跑啊
相关分类