在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 简介当不想给函数命名时,可以使用匿名函数,匿名函数不能独立存在,必须将匿名函数赋值给某个变量,然后通过这个变量调用对应的匿名函数; 示例: func main() { fpx:= func(x,y int)(z int) { return x+y } fmt.Println(fpx(1,2)) } 输出结果:3 2. 将匿名函数作为返回值2.1 普通匿名函数func main() { fpx:=Add2() // 返回 Add2() 中 return 的函数,即 b +2 z := fpx(1) // 将 1 传入函数,即 1 + 2 = 3 fmt.Println(z) } func Add2() func(b int) int { return func(b int) int { return b + 2 } } 2.2 匿名函数引用外部函数变量引用闭包时,在这个引用的生命周期内,程序会存储闭包中引用的外部函数变量(此时该变量类似于全局变量),直到闭包的生命周期结束。 func main() { // 引用闭包时,在这个引用的生命周期内,程序会存储闭包中引用的外部函数变量(此时该变量类似于全局变量) aa := append("q") fmt.Println(aa("w")) fmt.Println(aa("e")) fmt.Println(aa("r")) } func append(a string) func(b string) string { var s = a return func(b string) string { s = s + b return s } } 输出结果:
2.3 工厂函数如果需要创建较多功能类似的函数时,可以通过闭包的形式创建一个工厂函数; 示例:创建一个给文件名添加不同后缀的工厂函数 func main() { suffixTxt := makeAppendSuffix("txt") fmt.Println(suffixTxt("a")) fmt.Println(suffixTxt("b")) suffixMp4 := makeAppendSuffix("mp4") fmt.Println(suffixMp4("xx")) fmt.Println(suffixMp4("zz")) } func makeAppendSuffix(suffix string) func(name string) (totalName string) { return func(name string)(totalName string) { return name + "." + suffix } } 输出结果:
|
请发表评论