博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go指南练习_错误
阅读量:4632 次
发布时间:2019-06-09

本文共 884 字,大约阅读时间需要 2 分钟。

源地址

一、题目描述

从中复制 Sqrt 函数,修改它使其返回 error 值。

Sqrt 接受到一个负数时,应当返回一个非 nil 的错误值。复数同样也不被支持。

创建一个新的类型

type ErrNegativeSqrt float64

并为其实现

func (e ErrNegativeSqrt) Error() string

方法使其拥有 error 值,通过 ErrNegativeSqrt(-2).Error() 调用该方法应返回 "cannot Sqrt negative number: -2"

*注意:* 在 Error 方法内调用 fmt.Sprint(e) 会让程序陷入死循环。可以通过先转换 e 来避免这个问题:fmt.Sprint(float64(e))。这是为什么呢?

修改 Sqrt 函数,使其接受一个负数时,返回 ErrNegativeSqrt 值。

 

 

二、分析

  • 定义float64的类型ErrNegativeSqrt;
  • 重写Error方法。

 

三、Go代码

package mainimport (    "fmt"    "math")type ErrNegativeSqrt float64  //创建一个新的类型func (e ErrNegativeSqrt) Error() string {    return fmt.Sprintf("cannot Sqrt negative number:  %v", float64(e))}func Sqrt(x float64) (float64, error) {    if x < 0 {        return 0, ErrNegativeSqrt(x)    }    return math.Sqrt(x), nil}func main() {    fmt.Println(Sqrt(2))    fmt.Println(Sqrt(-2))}

运行结果

 

转载于:https://www.cnblogs.com/OctoptusLian/p/9209451.html

你可能感兴趣的文章
八种简易健康减肥瘦身法
查看>>
win7旗舰版下配置IIS服务器
查看>>
web开发基础
查看>>
java——逻辑运算符与(&和&&)或(|和||)
查看>>
iPhone App开发导航条(Navigation Bar)素材PSD下载
查看>>
jQuery中的事件机制深入浅出
查看>>
当前上下文中不存在viewbag
查看>>
Android拷贝工程不覆盖原工程的配置方法
查看>>
linux安装配置postgres及使用dblink
查看>>
ApacheBench(ab)使用详解
查看>>
SSH框架搭建笔记
查看>>
nginx语法
查看>>
存储过程和函数 PROCEDURE & FUNCTION
查看>>
笔试真题解析 ALBB-2015 算法project师实习生机试
查看>>
配置hadoop集群一
查看>>
SQL练习
查看>>
Python之迭代器,生成器与装饰器
查看>>
eclipse 出现user operation is waiting
查看>>
microsoft 为microbit.org 设计的课程
查看>>
calico
查看>>