Go指南练习之《错误》
来源:互联网 发布:respawn linux 编辑:程序博客网 时间:2024/05/18 18:14
Go官网指南
练习原文
从先前的练习中复制 Sqrt 函数,并修改使其返回 error 值。
由于不支持负数,当 Sqrt 接收到一个负数时,应当返回一个非 nil 的错误值。
创建一个新类型
type ErrNegativeSqrt float64
为其实现
func (e ErrNegativeSqrt) Error() string
使其成为一个 error, 该方法就可以让 ErrNegativeSqrt(-2).Error()
返回 “cannot Sqrt negative number: -2”
关键信息
定义float64的类型ErrNegativeSqrt ,并重写Error()方法
代码
package mainimport ( "fmt" "math")// 定义类型type ErrNegativeSqrt float64// 重写Error()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() {//通常函数会返回一个 error 值,调用的它的代码应当判断这个错误是否等于 nil, 来进行错误处理。//这里只是简单的打印 fmt.Println(Sqrt(2)) fmt.Println(Sqrt(-2))}
打印结果
1.4142135623730951 <nil>0 cannot Sqrt negative number: -2
0 0
- Go指南练习之《错误》
- Go指南练习之《slice》
- Go指南练习之《map》
- Go指南练习之《Stringers》
- Go指南练习之《斐波纳契闭包》
- Go指南练习之《Reader》
- Go指南练习之《rot13Reader》
- Go指南练习之《图片》
- Go指南练习之《斐波纳契闭包》
- Go指南练习之《循环和函数》
- Go指南练习之《HTTP 处理》
- Go指南练习之《等价二叉树》
- Go指南练习之《Web 爬虫》
- Go指南中的练习:map
- Go指南中的练习:Stringers
- go语言指南的练习
- Go指南—练习:rot13Reader
- go指南练习:循环和函数
- C ++ 银行家算法
- 单条/批量增加信息,Spring MVC, Mybatis, MySQL
- Move Zeroes
- 寒假07:字符串变换、P1102、P1101
- 第十三章 异步和数据驱动编程
- Go指南练习之《错误》
- LeetCode-Hash-409. Longest Palindrome
- day03--for应用
- D3入门学习
- android!!蓝!!牙
- CSS学习笔记1:初识CSS及其常见属性
- system 将参数传递给bat批处理文件
- 13.1 异步工作流
- kali-linux-2016 2.0 安装open-vm-tools