error類型是一個(gè)接口類型
type error interface {
Error() string
}
實(shí)例分析
//定義一個(gè)Error結(jié)構(gòu)
type DivideError struct {
dividee int //除數(shù)
divider int //被除數(shù)
}
//實(shí)現(xiàn) error 接口
func (de *DivideError)Error()string {
//規(guī)定錯(cuò)誤的格式
strFormat := `
Cannot proceed, the divider is zero.
dividee: %d
divider: 0
`
return fmt.Sprintf(strFormat,de.dividee)
}
//定義 int 類型除法運(yùn)算的函數(shù)
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)
}
//當(dāng)被除數(shù)為零的時(shí)候會(huì)返回錯(cuò)誤信息
if _,errorMsg := Divide(100,0);errorMsg!= "" {
fmt.Println("errorMsg is: ",errorMsg)
}
}