标签:UNC port pac 函数 赋值语句 pack defer 返回值 赋值
package main import "fmt" func f1() int { // 1、先执行返回值赋值,返回值等于x,等于5 // 2、执行defer语句,x++,x等于6 // 3、返回指令,返回返回值5 x := 5 defer func() { x++ // 修改的是x,不是返回值 }() return x } func f2() (x int) { // 1、先执行返回值赋值语句,所以return 5 -> x = 5 // 2、执行defer语句,返回值x++ -> x = 6 // 3、返回指令,返回6 defer func() { x++ }() return 5 } func f3() (y int) { x := 5 defer func(x int) { x++ }(x) return x } func f4() (x int) { defer func(x int) { x++ // 改的是函数中的副本,不影响外层的x值 }(x) return 5 } func main() { fmt.Println(f1()) fmt.Println(f2()) fmt.Println(f3()) fmt.Println(f4()) }
标签:UNC port pac 函数 赋值语句 pack defer 返回值 赋值
原文地址:https://www.cnblogs.com/noonjuan/p/11688925.html