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) }() } }