2017-10-20 115 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