点击运行
package main import "fmt" type areaError struct { err string // 错误描述 length float64 // 引发错误的长度的值 width float64 // 引发错误的宽度的值 } func (e *areaError) Error() string { return e.err } func (e *areaError) lengthNegative() bool { return e.length < 0 } func (e *areaError) widthNegative() bool { return e.width < 0 } func rectArea(length, width float64) (float64, error) { err := "" if length < 0 { err += "长度小于0" } if width < 0 { if err == "" { err = "宽度小于0" } else { err += ", 宽度小于0" } } if err != "" { return 0, &areaError{err, length, width} } return length * width, nil } func main() { length, width := -5.0, -9.0 area, err := rectArea(length, width) if err != nil { if err, ok := err.(*areaError); ok { if err.lengthNegative() { fmt.Printf("error: 长度 %0.2f 小于0\n", err.length) } if err.widthNegative() { fmt.Printf("error: 宽度 %0.2f 小于0\n", err.width) } return } fmt.Println(err) return } fmt.Println("矩形的面积 ", area) }
运行结果 :
正在执行...