Go语言开发
循环函数和工程管理
匿名函数与闭包
定义匿名内部函数
package main
import "fmt"
func main() {
a := 10
b := 20
//匿名内部函数
//f 是函数类型对应变量
f := func(a, b int) {
fmt.Println(a + b)
}
f(a, b) //调用定义的匿名函数
f(20, 30)
}
简单的
func main() {
f := func() {
println("hello,world")
}
f()
f()
f()
}
带返回值的匿名函数
package main
import "fmt"
func main() {
a := 10
b := 20
//匿名函数 带返回值的匿名函数
v := func(a, b int) int {
return a + b
}(a, b)
fmt.Println(v)
fmt.Printf("%T", v) // "%T"函数返回值类型,用Printf
}
结果为
当只是调用函数时
package main
import "fmt"
func main() {
a := 10
b := 20
//匿名函数 带返回值的匿名函数
v := func(a, b int) int {
return a + b
}
v(a, b)
fmt.Printf("%T", v)
fmt.Println(v)
fmt.Printf("%T", v) // "%T"函数返回值类型
}
闭包
导入
package main
import "fmt"
//函数在调用结束会从内存中销毁
func test1(a int) {
a++
fmt.Println(a)
}
func main() {
a := 0
for i := 0; i < 10; i++ {
test1(a)
}
}
导入2
// 返回值为一个函数
func test2(int) func() int {
var a int
//定义一个匿名函数
return func() int {
a++
return a
}
}
func main() {
//将test2的函数类型赋值给f
f := test2
//函数调用,将函数返回值赋值给f
//f := test2()
fmt.Printf("%T", f)
}
返回值为