男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述go语言学习---错误处理相关的知识,希望能为你提供帮助。
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。
error类型是一个接口类型,这是它的定义:
type error interface
Error() string
函数通常在最后的返回值中返回错误信息。使用errors.New 可返回一个错误信息:
func Sqrt(f float64) (float64, error)
if f <
0
return 0, errors.New("math: square root of negative number")// 实现
在调用Sqrt的时候传递的一个负数,然后就得到了non-nil的error对象,将此对象与nil比较,结果为true,所以fmt.Println(fmt包在处理error时会调用Error方法)被调用,以输出错误,请看下面调用的示例代码:result, err:= ```
Sqrt(-1)if err != nil
fmt.Println(err)
package main
import (
" fmt"
)
// 定义一个 DivideError 结构
type DivideError struct
dividee int
divider int
// 实现
error
接口func (de *DivideError) Error() string
strFormat :=
<
br/>
Cannot proceed, the divider is zero.<
br/>
dividee: %d<
br/>
divider: 0<
br/>
return fmt.Sprintf(strFormat, de.dividee)
// 定义
int
类型除法运算的函数func Divide(varDividee int, varDivider int) (result int, errorMsg string)
if varDivider == 0
dData := DivideError
dividee: varDividee,
divider: varDivider,
errorMsg = dData.Error()
return
else
return varDividee / varDivider, " "
func main()
// 正常情况
if result, errorMsg := Divide(100, 10);
errorMsg == ""
fmt.Println("100/10 = ", result)// 当除数为零的时候会返回错误信息
if _, errorMsg := Divide(100, 0);
errorMsg != ""
fmt.Println("errorMsg is: ", errorMsg)
【go语言学习---错误处理】
推荐阅读
- XML DOM – 属性和方法概述
- Markdown 基础语法#yyds干货盘点#
- Markdown 高级技巧#yyds干货盘点#
- zabbix-自动发现(ansible)#yyds干货盘点#
- ZabbixZabbix基于SNMP监控配置
- 分布式文件系统和企业级应用 ——rsync远程同步
- 一个月四五千的销售做软件测试可以吗
- 2-27-2 使用zabbix监控服务器运行状态
- 靠谱助手没反应的处理办法