我正在阅读Go语言教程.
我想查看这个问题的答案:
注意:fmt.Sprint(e)对Error方法内部的调用会将程序发送到无限循环.您可以通过e先转换来避免这种情况:fmt.Sprint(float64(e)).为什么?
我相信这是因为当Sprint调用函数时,由于错误是非零的,所以Error function()将再次调用,依此类推,从而导致无限循环.
我正在将HTTP API中的JSON数据解组为以下Golang结构:
type ResponseBody struct {
Version string `json:"jsonrpc"`
Result Result `json:"result"`
Error Error `json:"error"`
Id int `json:"id"`
}
type Result struct {
Random struct {
Data interface{} `json:"data"`
CompletionTime string `json:"completionTime"`
} `json:"random"`
BitsUsed int `json:"bitsUsed"`
BitsLeft int `json:"bitsLeft"`
RequestsLeft int `json:"requestsLeft"`
AdvisoryDelay int `json:"advisoryDelay"`
}
type Error struct {
Code int `json:"code"`
Message string `json:"message"`
Data []int `json:"data,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
我已经实现了错误接口,Error如下所示:
func (e Error) Error() string {
return fmt.Sprintf("Error: %+v", e)
}
Run Code Online (Sandbox Code Playgroud)
到目前为止的相关代码:
func Request(method string, …Run Code Online (Sandbox Code Playgroud)