Go学习笔记(九)接口,错误处理
来源:互联网 发布:淘宝进口牛肉便宜 编辑:程序博客网 时间:2024/05/29 17:09
接口
提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。
package mainimport ( "fmt")type Phone interface { call()}type NokiaPhone struct {}func (nokiaPhone NokiaPhone) call() { fmt.Println("I am Nokia, I can call you!")}type IPhone struct {}func (iPhone IPhone) call() { fmt.Println("I am iPhone, I can call you!")}func main() { var phone Phone phone = new(NokiaPhone) phone.call() phone = new(IPhone) phone.call()}
例子中,定义了一个接口Phone,接口里面有一个方法call()。然后在main函数里面定义了一个Phone类型变量,并分别为之赋值为NokiaPhone和IPhone。然后调用call()方法,输出结果如下:
I am Nokia, I can call you!I am iPhone, I can call you!
错误处理
通过内置的错误接口提供了非常简单的错误处理机制。
package mainimport ( "fmt")// 定义一个 DivideError 结构type DivideError struct { dividee int divider int}// 实现 `error` 接口func (de *DivideError) Error() string { strFormat := ` Cannot proceed, the divider is zero. dividee: %d divider: 0` 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) }}
输出结果为:
100/10 = 10errorMsg is: Cannot proceed, the divider is zero. dividee: 100 divider: 0
基础语句学习地址
0 0
- Go学习笔记(九)接口,错误处理
- Go语言学习九:接口、错误处理
- go语言学习笔记(10) 错误处理
- RxJava 学习笔记(九) --- Error Handling 错误处理操作
- Go 接口 学习笔记
- Go语言编程(九)之错误处理
- Go学习笔记五(接口)
- Go语言学习笔记(六)接口
- go基本语法学习笔记之错误处理
- Go语言学习笔记---接口
- Go学习笔记:json处理
- OWASP WebGoat---安全测试学习笔记(九)---不当的错误处理
- python学习笔记(九)异常处理
- go语言学习笔记-接口学习
- go lang学习笔记——接口
- go学习(十二)——Go 语言错误与异常处理机制
- java学习笔记九——接口
- 【学习笔记】系列九:接口测试
- 文章标题
- 软考--计算机系统结构
- import of android.R
- weka之对id3实现可视化
- 如何删除itunes中的ipa安装包
- Go学习笔记(九)接口,错误处理
- PTA 乙级 1037. 在霍格沃茨找零钱(20)
- Codeforces 306C White, Black and White Again
- CMake生成VS2013项目失败的解决办法
- 推荐系统论文资料集
- 662
- linux 配置 jdk
- RabbitMQ-理解消息通信-消费者和生产者
- 进程通信概念和进程通信方式