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)
}
}