点击运行
package main import ( "fmt" "math" ) type areaError struct { err string radius float64 } func (e *areaError) Error() string { return fmt.Sprintf("半径 %0.2f: %s", e.radius, e.err) } func circleArea(radius float64) (float64, error) { if radius < 0 { return 0, &areaError{"radius is negative", radius} } return math.Pi * radius * radius, nil } func main() { radius := -20.0 area, err := circleArea(radius) if err != nil { if err, ok := err.(*areaError); ok { fmt.Printf("半径 %0.2f 小于0", err.radius) return } fmt.Println(err) return } fmt.Printf("rectangle1 的面积 %0.2f", area) }
运行结果 :
正在执行...