85_Go基础_1_53 自定义结构体实现错误
1 package main 2 3 import ( 4 "fmt" 5 "math" 6 ) 7 8 //1.定义一个结构体,表示错误的类型 9 type areaError struct { 10 msg string 11 radius float64 12 } 13 14 // 2.实现error接口,就是实现Error()方法 15 func (e *areaError) Error() string { 16 return fmt.Sprintf("error:半径,%.2f,%s", e.radius, e.msg) 17 } 18 19 func circleArea(radius float64) (float64, error) { 20 if radius < 0 { 21 return 0, &areaError{"半径是非法的", radius} 22 } 23 return math.Pi * radius * radius, nil 24 } 25 26 func main() { 27 /* 28 自定义错误: 29 */ 30 31 radius := -3.0 32 area, err := circleArea(radius) 33 34 if err != nil { 35 fmt.Println(err) 36 if err, ok := err.(*areaError); ok { 37 fmt.Printf("半径是:%.2f\n", err.radius) 38 } 39 return 40 } 41 fmt.Println("圆形的面积是:", area) 42 43 }