go - 为什么这个 go 程序中的堆栈溢出错误?
问题描述
我正在尝试实施此练习:https ://tour.golang.org/methods/20
我提出的解决方案是:
import (
"fmt"
"math"
)
type ErrNegativeSqrt float64
func (e ErrNegativeSqrt) Error() string {
return fmt.Sprintf("cannot Sqrt negative number: %v", e)
}
func Sqrt(x float64) (float64, error) {
if x < 0.0 {
return 0, ErrNegativeSqrt(x)
}
return math.Sqrt(x), nil
}
func main() {
fmt.Println(Sqrt(2))
fmt.Println(Sqrt(-2))
}
运行此程序时出现stack overflow
错误。但是,当我在 中使用%g
时Sprintf
,它可以工作。我可以知道为什么它在使用时失败了%v
吗?
解决方案
推荐阅读
- python - 简化 re.compile 以匹配任何长字符
- javascript - 在 NodeRed 中使用 clearInterval
- linux - 如何解决 Linux 和 Modbus 的错误文件描述符
- java - 为谢尔宾斯基法打印三角形时如何固定三角形位置
- java - 反序列化时如何正确使用瞬态关键字?
- java - 在 Jetty 的 webapp 中重新加载类
- scala - 在 scala/Spark Dataset/Dataframe 中的 groupBy 之后同时计算聚合和百分比
- c# - JsonUtility 将结构序列化为 JSON Unity
- assembly - 如何隔离 64 位寄存器中的字节和字数组元素
- javascript - 如何正确使用jquery append