선수로 산다, 때론 좋은 코치로
[golang] A Tour of Go - 56 연습 문제 본문
[golang] A Tour of Go - 56 연습 문제
https://go-tour-kr.appspot.com/#55
당신의 Sqrt 함수를 이전 연습에서 복사하고 error 값을 반환하도록 수정하십시오.
Sqrt 함수는 복소수를 지원하지 않기 때문에, 음수가 주어지면 nil 이 아닌 에러 값을 반환해야 합니다.
새로운 타입을 만드십시오.
type ErrNegativeSqrt float64
and make it an error by giving it a 그리고 아래 메소드를 구현함으로써 그 타입이 error 가 되게 하십시오.
func (e ErrNegativeSqrt) Error() string
이는 ErrNegativeSqrt(-2).Error() 가 "cannot Sqrt negative number: -2" 를 반환하는 그러한 메소드입니다.
뉴턴 방법의 제곱근에서 초기값은 1로 설정하고, 5번 정도 반복하면 근사값을 구할 수 있다.
package main
import (
"fmt"
)
type ErrNegativeSqrt float64
func (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<5; i++ {
z = z - (z * z - x) / (2 * z)
}
return z, nil
}
func main() {
fmt.Println(Sqrt(2))
fmt.Println(Sqrt(-2))
}
'개발 관련 > go' 카테고리의 다른 글
[golang] A Tour of Go - 60 연습 문제 (0) | 2018.02.13 |
---|---|
[golang] A Tour of Go - 58 연습 문제 (0) | 2018.02.12 |
[golang] A Tour of Go - 48 연습 문제 (0) | 2018.02.12 |
[golang] A Tour of Go - 44 연습 문제 (0) | 2018.02.01 |
[golang] A Tour of Go - 41 연습 문제 (0) | 2018.02.01 |
Comments