package main import "fmt" func main(){ defer fmt.Println("我是最后执行1") defer fmt.Println("我是最后执行2") // 先执行2再执行1 f1() f2() } func f1(){ fmt.Println("f1") } func f2(){ fmt.Println("f2") }
package main import "fmt" func main() { f1() f2() f3() } func f1() { fmt.Println("f1...") } func f2() { defer func() { if a:=recover();a!=nil{ //a 如果不等于nil,表示程序出了异常,a 就是异常信息 //a 等于nil,表示没有异常 fmt.Println("出错了") } }() fmt.Println("f2...") var a =make([]int,3,3) fmt.Println(a[4]) } func f3() { fmt.Println("f3...") }
在 Go 中,错误一直是很常见的。错误用内建的 error
类型来表示。
就像其他的内建类型(如 int
、float64
等),错误值可以存储在变量里、作为函数的返回值等等。
package main import ( "errors" "fmt" ) func circleArea(radius int) (int, error) { if radius < 0 { return 0, errors.New("错误信息") // 如果不满足判断就会显示错误信息 } return 100, nil } func main() { a,_:=circleArea(-10) if err!=nil{ fmt.Println(err) } fmt.Println(a) _,err:=fmt.Println() if err!=nil{ fmt.Println("打印出错") } }