介绍godefer关键字

package main

import "fmt"

func main() {
	a()
	fmt.Println("")
	b()
	fmt.Println("")
	c()
	fmt.Println("")
}

func a() {
	// 输出:acb
	fmt.Print("a")       // 顺序1
	defer fmt.Print("b") // 顺序3
	defer fmt.Print("c") // 顺序2
}

func b() {
	// 输出:210
	for i := 0; i < 3; i++ {
		defer fmt.Print(i)
	}
}

func c() {
	// 输出:333,因为i在匿名函数的时候得到的是地址,即为3
	for i := 0; i < 3; i++ {
		defer func() {
			fmt.Print(i)
		}()
	}
}


你可能感兴趣的文章