为什么在Error()方法内调用fmt.Sprint(e)会导致无限循环?
我正在通过“ A Go of Go”教程。
我想检查一下这个问题的答案:
fmt.Sprint(e)
对Error
方法内部的调用将使程序陷入无限循环。您可以通过e
先转换来避免这种情况
fmt.Sprint(float64(e))
。为什么?
我相信这是因为Sprint
调用该函数时,由于错误为非nil,Error function()
将再次调用the ,依此类推,从而导致无限循环。
回答:
fmt.Sprint(e)
将调用e.Error()
将值转换e
为string
。如果该Error()
方法调用fmt.Sprint(e)
,则程序将递归直到内存不足。
您可以通过将转换为e
不带String
or Error
方法的值来中断递归。
以上是 为什么在Error()方法内调用fmt.Sprint(e)会导致无限循环? 的全部内容, 来源链接: utcz.com/qa/425317.html