GO_10:GO语言基础之error
Go错误处理
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。
error类型是一个接口类型,这是它的定义:
type error interface {Error() string }
我们可以在编码中通过实现 error 接口类型来生成错误信息。
函数通常在最后的返回值中返回错误信息。使用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 mainimport "fmt"// 定义一个 DivideError 结构 type DivideError struct {dividee int //除数divider int //被除数 }// 为DivideError绑定Error方法,实现 error 接口 func (de *DivideError)Error() string {//使用单反引号可以使输入的内容书写格式更加好看strFormat := `Cannot procceed, the divider is zero.dividee: %ddivider: 0`return fmt.Sprintf(strFormat, de.dividee) }// 定义 int 类型除法运算的函数 func Divide(varDividee int, varDivider int) (result int, errorMessage string) {if varDivider == 0 {//简单方法的实例化结构体dData := DivideError{dividee: varDividee,divider: varDivider,}errorMessage = dData.Error() //调用方法得到对应错误信息return} else {return varDividee / varDivider, ""} }func main() {// 正常情况if result, errorMessage := Divide(100, 6); errorMessage == "" {fmt.Println("100 / 6 = ", result)}// 当除数为0的时候会返回错误信息if _, errorMessage := Divide(100, 0); errorMessage != "" {fmt.Println("errorMessage is : ", errorMessage)} }
运行结果:
100 / 6 = 16 errorMessage is : Cannot procceed, the divider is zero.dividee: 100divider: 0
转载于:https://www.cnblogs.com/liang1101/p/6623548.html
GO_10:GO语言基础之error相关推荐
- GO语言基础之error
Go错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制. error类型是一个接口类型,这是它的定义: type error interface {Error() string } 我 ...
- 数据分析必备:掌握这个R语言基础包1%的功能让你事半功倍!(附代码)
来源:大数据 本文约7100字,建议阅读15分钟. 本文介绍了utils包在R语言基础的用途. [ 导读 ]无论数据分析的目的是什么,将数据导入R中的过程都是不可或缺的.毕竟巧妇难为无米之炊.util ...
- PL/SQL语言基础
PL/SQL语言基础 /********************************数据类型*************************************/ %rowtype (行对 ...
- Java核心技术笔记 语言基础
<Java核心技术 卷Ⅰ> 第3章 Java 的基本程序设计结构 一些规则 类命名:CamelCase 驼峰命名法,以及必须是字母开头,后面跟字母和数字的任意组合: 源代码文件名:必须与公 ...
- 黑马程序员C语言基础(第五天)运算符与表达式、程序流程结构、数组和字符串、函数
https://www.bilibili.com/video/BV15W411K7k6?p=93&spm_id_from=pageDriver 黑马程序员C语言基础(第五天)运算符与表达式.程 ...
- 黑马程序员C语言基础(第三天)
黑马程序员C语言基础(一)第三天 https://www.bilibili.com/video/BV15W411K7k6?p=40 文章目录 低级语言与高级语言 c语言优缺点 c语言应用领域 通过gc ...
- declare sql语句_每天10分钟学习T-SQL语言基础(Part 5)
[数据库技术]| 作者 / Edison Zhou <Microsoft SQL Server 2008技术内幕:T-SQL语言基础>是一本关于T-SQL方面的好书,可能现在我们在京东上都 ...
- [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...
- [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...
最新文章
- python实战演练_python实战演练(三)购物车程序
- 无法打开 configsource 文件
- 卸载后的mysql和navicat怎么清除干净_清除电脑“牛皮癣 ”,带你回归清爽体验~...
- pytorch笔记:torch.nn.functional.pad
- LeetCode题组:第13题-罗马数字转整数
- 详解惯性导航论文 RINS-W: Robust Inertial Navigation System on Wheels
- python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法
- Linux怎么对文件内容trim,Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)...
- Getmemory函数详解--内存操作的理解
- utilities(matlab)—— 合成数据(synthesis data)
- mysql分布式数据库_分布式数据库搭建详细教程
- 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(五)
- 路由器不显示连接该WiFi的设备
- 首届STAC科创联合大会在成都召开 “开悟” AI平台将成为行业生态基建
- 攻防世界 web高级 leaking
- Idea导包自动去除Import xxx.*里的星号
- 小型IT咨询公司发展迅猛
- iOS快捷指令 | iPicGo,随时随地用手机上传图片到图床
- AS广播实现音乐播放器
- 分销软件为何如此火爆?
热门文章
- CentOS8 同步时间chrony ntpdate已无法使用
- 网络渗透测试(2)——使用nmap扫描微信服务器
- null或空值的判断处理-java
- 学会这5种Excel颜色搭配技巧,表格想做不好看都难
- Python 虚拟环境安装 ,避免影响生产环境。
- 最低服务器协议,的WebSocket服务器最低要求
- php验证规则表单,PHP Yii框架之表单验证规则大全
- 如何自学成为设计师_如何成为平面设计师?平面设计师平时做什么?教你做好平面设计...
- [警告] multi-字符 character constant [-Wmultichar] ----字符+符号输出错误
- 配置tomcat tomcat与nginx的整合