Go语言匿名函数

Go语言匿名函数教程

Go 语言匿名函数 可以直接赋值给 变量, 也可以作为函数的 参数,传递给 函数

Go语言匿名函数赋值给变量

定义

f = func(paramters)(returnvals){ //do something } f(paramters)

说明

我们定义了一个匿名函数,该匿名函数的参数列表是 paramters,返回值 列表是 returnvals。并且,我们将该函数赋值给了变量 f,最后我们直接可以使用变量 f 加上 () 并传入参数的形式调用该匿名函数。

Go语言匿名函数做参数

定义

func walk(lis []int, callback func(int)){ }

说明

首先,我们定义了一个函数 walk,该函数的第一个参数是一个 切片,第二个参数是一个参数为 int 类型 的匿名函数。

这里,我们将匿名函数做为了函数参数传递给了函数。

案例

Go语言匿名函数赋值给变量

Go 语言的匿名函数可以赋值给变量

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") //Go语言的匿名函数可以赋值给变量 f := func(num1, num2 int){ fmt.Println(num1, " + ", num2, " = ", num1+num2) } f(10, 20) }

程序运行后,控制台输出如下:

20_golang匿名函数.png

我们定义了一个带两个 int 类型 参数的匿名函数,并且我们将该匿名函数赋值给了变量 f。

接着,我们只需要使用变量 f 加小括号的形式来调用我们定义的匿名函数,并且在 () 里面我们传入了 10 和 20,即 10 和 20 是这个匿名函数的参数,结果输出了这两个参数的和。

Go语言匿名函数做参数

Go 语言匿名函数做参数,一般是用作回调函数

package main import ( "fmt" ) func walk(lis []int, callback func(int)){ for _, i := range lis{ callback(i) } } func main() { fmt.Println("嗨客网(www.haicoder.net)") //Go语言匿名函数做参数,一般是用作回调函数 slice := []int{1, 2, 3, 4} walk(slice, func(i int) { fmt.Println("Num =", i) }) }

程序运行后,控制台输出如下:

21_golang匿名函数.png

我们定义了一个带两个参数的函数 walk,第一个参数是一个 int 切片,第二个参数是一个带 int 类型参数的匿名函数 callback,该函数的功能是使用 for 循环 遍历切片里的每一个数,并调用 callback。

接着,在 main 函数调用时,我们第一个参数传入了一个 int 切片,第二个参数传入了一个 int 类型参数的匿名函数,并在匿名函数里面当前当前遍历的值。

Go语言匿名函数做参数

Go 语言匿名函数做参数,可以先定义出函数

package main import ( "fmt" ) func print(num int){ fmt.Println("Num =", num) } func walk(lis []int, callback func(int)){ for _, i := range lis{ callback(i) } } func main() { fmt.Println("嗨客网(www.haicoder.net)") //Go语言匿名函数做参数,可以先定义出函数 slice := []int{1, 2, 3, 4} walk(slice, print) }

程序运行后,控制台输出如下:

22_golang匿名函数.png

我们定义了一个带两个参数的函数 walk,第一个参数是一个 int 切片,第二个参数是一个带 int 类型参数的匿名函数 callback,该函数的功能是使用 for循环遍历切片里的每一个数,并调用 callback。

接着,我们定义了一个 print 函数,该函数的参数是一个 int 类型的变量。最后,在 main 函数调用时,我们第一个参数传入了一个 int 切片,第二个参数直接传入了我们定义的 walk 函数,并在匿名函数里面当前当前遍历的值。

Go语言匿名函数总结

Go 语言的匿名函数可以直接赋值给变量, 也可以作为函数的参数,传递给函数。Go 语言匿名函数赋值给变量语法:

f = func(paramters)(returnvals){ //do something }

Go 语言匿名函数做参数语法:

func walk(lis []int, callback func(int)){ }