【问题标题】:Golang unmarshal struct with error interface func带有错误接口函数的 Golang 解组结构
【发布时间】:2017-10-20 12:41:11
【问题描述】:

我正在尝试从错误接口投诉的结构中执行 Unmarshal,但是当我尝试获取 Res 结构错误内容时,它会返回错误接口字符串。

示例(带有错误接口抱怨):https://play.golang.org/p/ZZDTMSXYO7

结果:2009/11/10 23:00:00 C: -> {Data:{Title:Lorem Ipsum data} Error:}

示例(无错误接口抱怨):https://play.golang.org/p/VmS0xIglC0

预期:2009/11/10 23:00:00 C: -> {Data:{Title:Lorem Ipsum data} Error:{Title:Lorem Ipsum error}}

谁能帮助我们解决这个问题?

【问题讨论】:

  • 您能解释一下您要做什么吗?您正在创建一个 Error() string 方法,它只返回和空字符串,但抱怨它返回和空字符串。
  • 您知道第一个示例正确解组,您只是没有打印错误值吗? play.golang.org/p/g5tMmdjCC3
  • 为什么还要使用自己的自定义错误类型,为什么不直接使用内置错误类型?

标签: go


【解决方案1】:

log.Printf 使用 %+v 格式对实现 error 接口的值调用 Error 方法,Error 类型就是这种情况。因此,它不是打印值的内容,而是打印Error 方法返回的字符串,在您的示例中这是一个空字符串。

但这并不意味着解组器没有正确解组 json,您可以通过将格式化动词更改为 %#v 或仅打印 Title 字段来看到这一点。

https://play.golang.org/p/PgFCDnySb9

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 2023-03-04
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多