匿名函数:没有函数名,其他和普通函数一样。实际编程中,函数变量也是得到了很大的应用。
匿名函数在使用函数的时候才再定义函数,匿名函数可以作为一种类型被赋值给函数变量,往往以变量形式进行传递。
go只是随时在代码里定义匿名函数。
匿名函数的使用
1,将匿名函数赋值给函数变量。
案例: package main import ( "fmt" ) func main(){ f := func (test int){ fmt.Println("data:",test) } f(1000) } 输出: data 123
2,将匿名函数用作回调函数
资料案例:
package main import ( "fmt" ) // 定义一个普通函数,遍历切片的每个元素, 通过给定函数进行元素输出 func visit(list []int, f func(int)) { for _, v := range list { f(v) //实际是通过调用普通函数,将匿名函数赋值给了一个函数变量f。 } } func main() { // 使用匿名函数打印切片内容,这里visit的第二个参数实际就是一个定义完整的匿名函数。 visit([]int{1, 2, 3, 4}, func(v int) { fmt.Println(v) }) }
输出结果:
1
2
3
4
2,使用匿名函数实现操作封装
package main import ( "flag" "fmt" ) var skillParam = flag.String("skill", "", "skill to perform") func main() { flag.Parse() var skill = map[string]func(){ "fire": func() { fmt.Println("chicken fire") }, "run": func() { fmt.Println("soldier run") }, "fly": func() { fmt.Println("angel fly") }, } if f, ok := skill[*skillParam]; ok { f() } else { fmt.Println("skill not found") } }
采用教材的案例,实际这里的匿名函数,结果为map元素对应的键值value。
3,函数类型实现接口–把函数作为接口来调用。
后边补充。
转载请注明:21运维 » Go语言基础–函数–匿名函数