06-接口-02-内置错误接口

2021-11-20  本文已影响0人  玄德公笔记

内置的错误接口

package main

import (
    "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
`
//fmt.Sprintf格式化输出,前边strFormat中有个%d,需要传后边de.dividee的值
    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() {
     x := 100
     y := 10
    // 正常情况
    if result, errorMsg := Divide(x,y); errorMsg == "" {
            fmt.Println("100/10 = ", result)
    }
    // 当除数为零的时候会返回错误信息
    if _, errorMsg := Divide(x, y); errorMsg != "" {
            fmt.Println("errorMsg is: ", errorMsg)
    }

上一篇 下一篇

猜你喜欢

热点阅读