2017-10-20 83 views
0

我想从错误接口投诉的结构,但当我试图获得Res结构错误内容,它会返回错误接口字符串,而不是。Golang unmarshal结构与错误接口func

实施例(有错误接口抱怨):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}}

任何人都可以帮助我们吗?

+0

你能解释一下你想做什么吗?你正在创建一个'Error()字符串'方法,它只返回空字符串,但抱怨它返回并为空字符串。 – JimB

+0

您知道第一个示例解组正确,您只是不打印错误值? https://play.golang.org/p/g5tMmdjCC3 – JimB

+0

为什么即使使用您自己的自定义错误类型,为什么不使用内置错误类型呢? –

回答

3

log.Printf%+v格式呼吁实现了error接口,这是你的Error类型的情况下的值Error方法。因此,不是打印该值的内容,而是打印Error方法返回的字符串,在您的示例中这是一个空字符串。

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

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