Created
January 22, 2017 07:34
-
-
Save ta1kt0me/4fb32ac79ed35d5bf544051ec6de1641 to your computer and use it in GitHub Desktop.
Exercise: Errors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "fmt" | |
| ) | |
| type ErrNegativeSqrt float64 | |
| func (e ErrNegativeSqrt) Error() string { | |
| // unless cast to float64, e call Error() method again to call fmt.Print(e) | |
| return fmt.Sprintf("cannot Sqrt negative number: %g", float64(e)) | |
| } | |
| func Sqrt(x float64) (float64, error) { | |
| if x < 0 { | |
| return 0, ErrNegativeSqrt(x) | |
| } | |
| z := 9.0 | |
| for i := 0; i < 10; i++ { | |
| z = z - ((z*z - x) / (2 * z)) | |
| } | |
| return z, nil | |
| } | |
| func main() { | |
| fmt.Println(Sqrt(2)) | |
| fmt.Println(Sqrt(-2)) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment