Golang:闭包函数中对外部变量引用的是值还是指针?
Case 1
package main
import "fmt"
func main() {
v := 10
defer func() {
fmt.Printf("v = %d\n", v)
}()
v = 30
}
输出:
v = 30
显而易见,引用的是指针
Case 2
func main() {
t()
}
func t() {
a := make([]int, 0)
defer fmt.Println("a =", a)
a = append(a, 1)
}
输出:
a = []
这里创建的延迟函数调用,传递的则是a的拷贝,与Case 1不同