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))
    }
  • 相关阅读:
    vue 路由
    CSS篇-dispaly、position、定位机制、布局、盒子模型、BFC
    CSS篇-样式表、选择器、权重、伪类
    vue-cli3.0 开发环境构建
    Vue 全家桶学习资源(转)
    vue全家桶常用命名
    服务拆分
    分布式事务及其解决方法
    java mvc 及其缓存
    java 面试经典题
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4057883.html
Copyright © 2011-2022 走看看