练习:错误
复制你的 Sqrt 函数(来自之前的练习),并修改它,使其返回一个 error 值。
Sqrt 在接收到负数时应返回一个非 nil 的错误值,因为它不支持复数。
创建一个新类型
type ErrNegativeSqrt float64
并使其成为一个 error,方法是为它定义一个
func (e ErrNegativeSqrt) Error() string
方法,使得 ErrNegativeSqrt(-2).Error() 返回 "cannot Sqrt negative number: -2"。
注意: 调用 fmt.Sprint(e),如果这个调用位于 Error 方法内部,会使程序陷入无限循环。你可以先转换 e 来避免这个问题: fmt.Sprint(float64(e))。为什么?
修改你的 Sqrt 函数,使它在接收到负数时返回一个 ErrNegativeSqrt 值。