您的位置:首页 > 编程语言 > Go语言

go语言Exercise: Errors

2012-05-09 15:41 381 查看
Copy your
Sqrt
function from the earlier exercises and modify it to return an
error
value.
Sqrt
should return a non-nil error value when given a negative number, as it doesn't support complex numbers.
Create a new type
type ErrNegativeSqrt float64

and make it an
error
by giving it a
func (e ErrNegativeSqrt) Error() string

method such that
ErrNegativeSqrt(-2).Error()
returns
"cannot
Sqrt negative number: -2"
.
Note: a call to
fmt.Print(e)
inside the
Error
method
will send the program into an infinite loop. You can avoid this by converting
e
first:
fmt.Print(float64(e))
.
Why?
Change your
Sqrt
function to return an
ErrNegativeSqrt
value
when given a negative number.
package main

import (

"fmt"

)

type ErrNegativeSqrt float64

func (e ErrNegativeSqrt) Error() string{

return fmt.Sprintf("cantnot Sqrt negative number: %v", float64(e))

}

func Sqrt(f float64) (float64, error) {

if f < 0 {

return 0, ErrNegativeSqrt(f)

}

z := f

for i := 0; i < 10; i++ {

z = (z + f/z)/2

}

return z, nil

}

func main() {

if value, err := Sqrt(-2); err != nil {

fmt.Println(err)

} else {

fmt.Println(value)

}

if value, err := Sqrt(2); err != nil {

fmt.Println(err)

} else {

fmt.Println(value)

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: