秒懂Golang匿名函数
时间:2021-07-04 09:24:32|栏目:Golang|点击: 次
上篇文章给大家介绍了go语言匿名函数的使用 需要的朋友点击查看。今天给大家介绍Golang匿名函数的相关知识,具体内容如下:
概念
所谓匿名函数,就是没有名字的函数
匿名函数(英语:Anonymous Function)在计算机编程中是指一类无需定义标识符(函数名)的函数或子程序,普遍存在于多种编程语言中。---wikipedia
Golang是支持匿名函数的,即在需要使用函数时,再定义函数,匿名函数没有函数名,只有函数体,函数可以被作为一种类型被赋值给函数类型的变量,匿名函数往往以变量方式被传递
匿名函数经常被用于实现回调函数,闭包等.
匿名函数定义
匿名函数的定义就是: 没有名字的普通函数
func (参数列表) (返回值列表) { 函数体 }
匿名函数的两种使用方式
一、在定义匿名函数的时候就可以直接使用(这种方式只使用一次)
package main import ( "fmt" ) func main(){ res1 := func (n1 int, n2 int) int { return n1 + n2 }(10, 30) //括号里的10,30 就相当于参数列表,分别对应n1和n2 fmt.Println("res1=",res1) }
D:\goproject\src\main>go run hello.go res1= 40
二、将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数
package main import ( "fmt" ) func main(){ //将匿名函数fun 赋给变量test_fun //则test_fun的数据类型是函数类型,可以通过test_fun完成调用 test_fun := func (n1 int, n2 int) int { return n1 - n2 } res2 := test_fun(10, 30) res3 := test_fun(50, 30) fmt.Println("res2=", res2) fmt.Println("res3=", res3) fmt.Printf("%T", test_fun) }
D:\goproject\src\main>go run hello.go res2= -20 res3= 20 func(int, int) int
全局匿名函数
全局匿名函数就是将匿名函数赋给一个全局变量,那么这个匿名函数在当前程序里可以使用
package main import ( "fmt" ) //Test_fun 就是定义好的全局变量 //全局变量必须首字母大写 var ( Test_fun = func (n1 int, n2 int) int { return n1 - n2 } ) func main(){ val1 := Test_fun(9, 7) fmt.Println("val1=", val1) }
D:\goproject\src\main>go run hello.go val1= 2