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

posted @ 2022-03-14 21:28  技术颜良  阅读(82)  评论(0编辑  收藏  举报