为什么在此go程序中出现堆栈溢出错误?

时间:2019-02-28 23:02:18

标签: go stack-overflow

我正在尝试实施此练习: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时失败了吗?

0 个答案:

没有答案