登录
首页 >  Golang >  Go问答

将 gRPC 预告片翻译为 Go 的错误类型

来源:stackoverflow

时间:2024-02-23 08:30:26 436浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《将 gRPC 预告片翻译为 Go 的错误类型》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我从 grpc 调用中收到错误作为预告片,我想将其转换为 go 中的错误对象。我的问题是返回的对象是字符串类型,而且我无法找到将其转换为错误对象的方法。

也许错误对象是错误的方法,我真的只想能够以良好的格式向最终用户显示错误。

我在 go 中的测试代码如下所示:

_, e := client.createpayment(ctx, addpayment, grpc.trailer(&trailer))

if e != nil {
    stringerror := trailer.get("errors-bin")
    fmt.println(stringerror)

    return "", e
}

打印的字符串如下所示:

[
n
l
result.message↕string.min_len→*value length must be at least 1 characters]

解决这个问题的java代码如下所示:

Metadata trailers = e.getTrailers();
if(trailers != null) {
    ErrorsProto.Errors errors = e.getTrailers().get(ProtoUtils.keyForProto(ErrorsProto.Errors.getDefaultInstance()));
    if(errors != null) {
        System.out.println(errors);
    }
}

正确答案


我在朋友的帮助下解决了这个问题:)

0
stringError := trailer.Get("errors-bin")
    byteError := []byte(stringError[0])

    var result common.Errors

    _ = proto.Unmarshal(byteError, &result)

    err := result.GetErrors()

    fmt.Println(err)

common.errors是由protoc从errors.proto文件创建的。

好了,本文到此结束,带大家了解了《将 gRPC 预告片翻译为 Go 的错误类型》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>