闭包捕获外部变量特点
package main
import "fmt"
func main(){
typeName := "帅哥"
name := "666"
func(){
typeName = "666"
name = "帅哥"
fmt.Printf("typeName: %d , name: %d \n",typeName,name)
}()
fmt.Printf("typeName:%d , name:%d \n",typeName,name)
}
运行结果:
闭包特点
package main
import "fmt"
func func2() int{
var x int
x++
return x*x //函数调用完成自动释放...
}
func main(){
fmt.Println(func2())
fmt.Println(func2())
fmt.Println(func2())
fmt.Println(func2())
fmt.Println(func2())
}
package main
import "fmt"
func func2() func() int {
var x int
return func() int {
x++
return x*x
}
}
func main(){
f := func2()
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
}
不引用!!!
package main
import "fmt"
func func2() func() int {
var x int
return func() int {
x++
return x*x
}
}
func main(){
fmt.Println(func2())
fmt.Println(func2())
fmt.Println(func2())
fmt.Println(func2())
fmt.Println(func2())
}