GO指南 练习:错误
练习:错误 从之前的练习中(牛顿平方根方法)复制 Sqrt 函数,修改它使其返回 error 值。
Sqrt
接受到一个负数时,应当返回一个非 nil 的错误值。复数同样也不被支持。
创建一个新的类型
|
|
并为其实现
|
|
方法使其拥有 error 值,通过 ErrNegativeSqrt(-2).Error()
调用该方法应返回 "cannot Sqrt negative number: -2"
。
注意: 在 Error 方法内调用 fmt.Sprint(e)
会让程序陷入死循环。可以通过先转换 e 来避免这个问题:fmt.Sprint(float64(e))
。这是为什么呢?
修改 Sqrt 函数,使其接受一个负数时,返回 ErrNegativeSqrt
值。
|
|
答:fmt.Sprint(e)
会优先调用Error()
方法,即本身,这会导致死循环。
ErrNegativeSqrt(x)
:其中ErrNegativeSqrt
是一个类型,相当于int
和float
之类的,而ErrNegativeSqrt(x)
就表示强制把x
从float64
转换为ErrNegativeSqrt
类型。
链接:https://tour.go-zh.org/methods/20