package main

import "fmt"

type ZeroDivisor struct {  // 定义一个0当做除数的结构体
divisor int // 被除数
divider int // 除数
} func (zd *ZeroDivisor) Error() string { // 实现Error接口
strFormat := `
the divider is zero
divisor: %d
divider: 0
`
return fmt.Sprintf(strFormat, zd.divisor)
} func Divide(divisor, divider int) (result int, errMsg string) { // 定义int类型书法运算的函数
if divider == 0 {
zero := ZeroDivisor{divisor: divisor, divider: divider}
errMsg = zero.Error()
return
} else {
return divisor / divider, ""
}
} func main() {
// 正常情况
if result, errMsg := Divide(100,20); errMsg == "" {
fmt.Println("100 / 20 =", result)
}
// 当除数为0时返回的错误信息
if _, errMsg := Divide(100, 0); errMsg != "" {
fmt.Println("errMsg是:", errMsg)
}
}

  

golang中自定义实现0当做除数的错误异常处理接口的更多相关文章

  1. golang中自定义一些类型和对应类型的指针方法

    package main import "fmt" // 项目开发中可以为type声明的类型编写一些方法,从而实现对象.方法的操作 // 声明类型 type myInt int / ...

  2. Golang中的自动伸缩和自防御设计

    Raygun服务由许多活动组件构成,每个组件用于特定的任务.其中一个模块是用Golang编写的,负责对iOS崩溃报告进行处理.简而言之,它接受本机iOS崩溃报告,查找相关的dSYM文件,并生成开发者可 ...

  3. Android开发如何在4.0及以上系统中自定义TitleBar

    本文将通过一个实例讲解怎么实现在4.0及以上系统版本中实现自定义TitleBar,这只是我自己找到的一种方法; xml布局文件 activity_main.xml <RelativeLayout ...

  4. 【荐】详解 golang 中的 interface 和 nil

    golang 的 nil 在概念上和其它语言的 null.None.nil.NULL一样,都指代零值或空值.nil 是预先说明的标识符,也即通常意义上的关键字.在 golang 中,nil 只能赋值给 ...

  5. [转]Golang 中使用 JSON 的小技巧

    taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...

  6. 六、golang中的结构体和方法、接口

    结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...

  7. iota: Golang 中优雅的常量

    阅读约 11 分钟 注:该文作者是 Katrina Owen,原文地址是 iota: Elegant Constants in Golang 有些概念有名字,并且有时候我们关注这些名字,甚至(特别)是 ...

  8. Golang中如何正确的使用sarama包操作Kafka?

    Golang中如何正确的使用sarama包操作Kafka? 一.背景 在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源): 用户A给B发送消息,msg_gateway收到消息后,投 ...

  9. golang中的RPC开发-2

    RPC简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 如果 ...

随机推荐

  1. 10分钟uniapp实现即时通讯,腾讯云IM的正确打开方式get

    官方的demo基本上覆盖了所有功能点 今天在使用uniapp开发即时通讯IM的时候遇到了瓶颈,便在uniapp的插件市场搜寻一波看看有没有成熟的轮子借鉴,终于发现了这个宝藏插件--"智密 - ...

  2. SpringBoot内嵌ftp服务

    引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.ftpserver/ftpserver-core --> <depen ...

  3. 使用mysql查询语句统计数据,如果是null值则赋值为0

    select IFNULL(sum(total_view),0) from 如果统计total_view这列为null ,则返回默认值0

  4. 【LeetCode】999. Available Captures for Rook 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力遍历 日期 题目地址:https://leetc ...

  5. 【LeetCode】922. Sort Array By Parity II 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 使用奇偶数组 排序 奇偶数位置变量 日期 题目地址: ...

  6. 1340 - Story of Tomisu Ghost

    1340 - Story of Tomisu Ghost   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...

  7. 食物链(poj1182)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 57387   Accepted: 16781 Description ...

  8. 【机器学*】k*邻算法-03

    心得体会: 需要思考如何将现实对象转化为特征向量,设置特征向量时记住鸭子定律1 鸭子定律1 如果走路像鸭子.说话像鸭子.长得像鸭子.啄食也像鸭子,那它肯定就是一只鸭子 事物的外在特征就是事物本质的表现 ...

  9. Python基础入门(8)- Python模块和包

    1.包与模块的定义与导入 1.1.什么是python的包与模块 包就是文件夹,包中还可以有包,也就是子文件夹 一个个python文件模块 1.2.包的身份证 __init__.py是每一个python ...

  10. 对vector和map容器的删除元素操作

    /** * 删除头部元素 * 切割map到指定的个数 * @param map * @param i * @return */ map<int, Rect> PublicCardFrame ...