首页 > 解决方案 > 为什么这个 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错误。但是,当我在 中使用%gSprintf,它可以工作。我可以知道为什么它在使用时失败了%v吗?

标签: gostack-overflow

解决方案


推荐阅读