参考解法:
package main
import ( "fmt")type ErrNegativeSqrt float64func (e ErrNegativeSqrt) Error() string { return fmt.Sprintf("cannot Sqrt negative number: %f", e)}func Sqrt(x float64) (float64, error) { if x < 0 { return 0, ErrNegativeSqrt(x) } z := 1.0 for i := 0; i < 20; i++ { z = z - (z*z-x)/(2*x) } return z, nil}func main() { nums := []float64{4, -6, 8, 10} for _, v := range nums { sqrv, e := Sqrt(v) if e == nil { fmt.Printf("sqrt(%f)=%f\n", v, sqrv) } else { fmt.Println(e) } }}