zoukankan      html  css  js  c++  java
  • A Tour of Go Exercise: Errors

    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"
        "strconv"
    )
    type ErrNegativeSqrt float64
    func (e ErrNegativeSqrt) Error() string{
        if e < 0 {
            return "cannot Sqrt negative number:" + strconv.FormatFloat(float64(e),'f',5,64)
        }
        return ""
    }
    func Sqrt(f float64) (float64, error) {
        var e error
        if f < 0 {
            return 0,ErrNegativeSqrt(f)
        }
        var z float64 = 1
        for i := 0; i < 10; i++ {
            z = z - (z*z - f) / (2 * z)
        }
        return z,e
    }
    
    func main() {
        fmt.Println(Sqrt(2))
        fmt.Println(Sqrt(-2))
    }
  • 相关阅读:
    输出菱形
    for语句输出三角形
    阶乘倒数的和
    变量赋值判断奇偶
    928作业
    各种主流数据库的比较(所以说我觉得Oracle这个keng?入的不错?)
    Oracle创建表
    (转载)全球唯一标识GUID
    (转载)Java基础知识总结
    两天以来对plsqldev操作的记忆
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4057883.html
Copyright © 2011-2022 走看看