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 }

相关