在go语言中,defer和return的执行顺序其实有很多的学问,本人在学习过程中,也是被defer和return的组合拳打得神志恍惚,想在网上找一找大神讲解,但是找了半天没找到太全面的,最后在查阅了资料,并敲了几个代码后好不容易捋顺了思路,特意来写了这篇文章,希望能对同样迷茫的初学者带来一些帮助。
关于defer的作用,就不多做赘述了,下面将直接通过四个例子来说明defer和return的运行机制。
例子1:
func demo01() int {
n := 10
defer func() {
n++
fmt.Println("defer1的值为:", n) // 输出12
}()
defer func() {
n++
fmt.Println("defer2的值为:", n) // 输出13
}()
n++
return n
}