当前位置: 首页 > 面试题库 >

为什么在Error()方法内调用fmt.Sprint(e)会导致无限循环?

宦炜
2023-03-14
问题内容

我正在通过“ A Go of Go”教程

我想检查一下这个问题的答案:

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

我相信这是因为Sprint调用该函数时,由于错误为非nil,Error function()将再次调用the ,依此类推,从而导致无限循环。


问题答案:

fmt.Sprint(e)将调用e.Error()将值转换estring。如果该Error()方法调用fmt.Sprint(e),则程序将递归直到内存不足。

您可以通过将转换为e不带Stringor Error方法的值来中断递归。



 类似资料:
  • 我有一个看起来很简单的问题,但由于某种原因我无法绕过它。基本上我的程序正在导致一个无限循环,我不知道为什么。 下面是我陷入的特定循环: 当我运行它时,它总是问我输入列#。我给它一个数字,它接受这个数字,$response变为True,但while循环继续运行,就好像<code>的$response</code>为false一样。我是Perl新手,所以可能我遗漏了一些东西,但是($response=

  • 我对react钩子和效果有点陌生,在使用useEffect时遇到了问题 上面的代码是我构建的useEffect,用于使用axios获取数据库中的所有数据,并且我将所有数据放在一个称为reports的状态中。 但是当我console.log报告时,它会导致无限循环。我不知道为什么? 让我给你看一个我做的简单动作。 我正在做一个按钮,当它被点击时,报告的状态(按id)将被更新。 这是该州报告结构的样本

  • 有人能解释一下这段JavaScript代码的程序流程吗:

  • 我正在Drools中编写一个规则集,以下情况会通过重新触发规则导致无限循环: 以下规则更改不会导致无限循环,即当ObjectB中不再引用a1时: 另一种不会导致无限循环的情况是当我将更改为 将“触发重新评估知识库中匹配对象类型的所有模式”,但由于我正在修改的字段field3没有在LHS条件中使用,我认为不应该重新评估。然而,我不能肯定这与引用a1有关。字段1位于ObjectB中,但我找不到具体的原

  • 我遇到了一种奇怪的行为。我的应用程序有一个主要活动,由navdrawer布局和默认列表片段组成。列表片段使用改造客户端获取内容。选择列表项时,将显示详细视图。在小屏幕上,通过单独的活动加载详细信息视图。该活动还使用改装客户端获取详细信息。然后,可以从生成新活动的navdrawer中选择一个选项。该活动也使用改造客户端发送数据。 列表和详细活动很好地调用了改造方法。我可以看到日志和事情正在按预期工作

  • 请问上述代码的第70行换成第71行注释的内容时,为什么会造成死循环。 题目: https://www.acwing.com/problem/content/174/