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))
    }
  • 相关阅读:
    windows下搭建hadoopproject(一)
    inspect模块---检查活动对象
    Python的datetime模块分析
    深入理解python之self
    request payload
    计算机基础知识
    pycharm常用快捷键
    英语学习五大法则
    基础语法
    英语基本语法
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4057883.html
Copyright © 2011-2022 走看看