Go语言 错误处理

2018-08-18  本文已影响0人  小杰的快乐时光

error类型是一个接口类型

type error interface {
    Error() string
}

实例分析

//定义一个Error结构
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)
   }
}
上一篇下一篇

猜你喜欢

热点阅读