这个是A Tour of Go这个教程里面的第六个练习,原题如下:
…从之前的练习中复制
Sqrt
函数,修改它使其返回error
值。
Sqrt
接受到一个负数时,应当返回一个非 nil 的错误值。复数同样也不被支持。创建一个新的类型
type ErrNegativeSqrt float64并为其实现
func (e ErrNegativeSqrt) Error() string方法使其拥有
error
值,通过ErrNegativeSqrt(-2).Error()
调用该方法应返回"cannot Sqrt negative number: -2"
。注意: 在
Error
方法内调用fmt.Sprint(e)
会让程序陷入死循环。可以通过先转换e
来避免这个问题: