相关疑难解决方法(0)

错误,无限循环

我正在阅读Go语言教程.

我想查看这个问题的答案:

注意:fmt.Sprint(e)Error方法内部的调用会将程序发送到无限循环.您可以通过e先转换来避免这种情况:fmt.Sprint(float64(e)).为什么?

我相信这是因为当Sprint调用函数时,由于错误是非零的,所以Error function()将再次调用,依此类推,从而导致无限循环.

go

28
推荐指数
2
解决办法
3712
查看次数

访问实现错误接口的Golang结构会导致函数永不返回

背景

我正在将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)

struct go

1
推荐指数
1
解决办法
257
查看次数

标签 统计

go ×2

struct ×1