Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 巡更练习:错误:将Sprintf与%f一起使用以避免无限递归_Go - Fatal编程技术网

Go 巡更练习:错误:将Sprintf与%f一起使用以避免无限递归

Go 巡更练习:错误:将Sprintf与%f一起使用以避免无限递归,go,Go,我正在进行Go tour,在错误练习中提到,在错误函数中调用Sprint(f)将导致一个问题,这是一个无限循环。这里解释了发生这种情况的原因: 但在我的第一个实现中,我将Sprintf与%f动词一起使用: func (e ErrNegativeSqrt) Error() string { return fmt.Sprintf("cannot Sqrt negative number: %f", e) } 这似乎避免了这个问题,我想知道这是否是因为%f谓词期望一个浮点数,所以它强制它将e

我正在进行Go tour,在错误练习中提到,在错误函数中调用Sprint(f)将导致一个问题,这是一个无限循环。这里解释了发生这种情况的原因:

但在我的第一个实现中,我将Sprintf与%f动词一起使用:

func (e ErrNegativeSqrt) Error() string {
    return fmt.Sprintf("cannot Sqrt negative number: %f", e)
}
这似乎避免了这个问题,我想知道这是否是因为%f谓词期望一个浮点数,所以它强制它将e视为浮点数?旅游团提到了这一点,但我认为这不会影响这个案例


还是我完全偏离了目标,这里发生了其他事情?

无限循环的情况只适用于
v
s
x
x
q


请参见此处:

不会
Sprintf
返回字符串,因此不会受到问题的影响?Sprint也会返回字符串是,对。我的错。当同样的问题出现时,检查这些问题+答案,类型转换解决了它(解释在答案中):;和。