go的defer 函数
package main
import "fmt"
var name ="pyhon"
func Demo() string {
defer func() {
name = "go"
}()
fmt.Println(name)
return name
}
func main() {
na:= Demo() //打印内部的name
fmt.Println(na) //解释只有一个,那就是 defer 是return 后才调用的。所以在执行 defer 前,na 已经被赋值成 python 了。
fmt.Printf("%v\n",name) //在 defer 里改变了这个全局变量,此时name的值已经变成了go
}
//
pyhon
go
pyhon