Go 语言 的 匿名函数 可以直接赋值给 变量, 也可以作为函数的 参数,传递给 函数。
f = func(paramters)(returnvals){
//do something
}
f(paramters)
我们定义了一个匿名函数,该匿名函数的参数列表是 paramters,返回值 列表是 returnvals。并且,我们将该函数赋值给了变量 f,最后我们直接可以使用变量 f 加上 () 并传入参数的形式调用该匿名函数。
func walk(lis []int, callback func(int)){
}
首先,我们定义了一个函数 walk,该函数的第一个参数是一个 切片,第二个参数是一个参数为 int 类型 的匿名函数。
这里,我们将匿名函数做为了函数参数传递给了函数。
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)
}
程序运行后,控制台输出如下:
我们定义了一个带两个 int 类型 参数的匿名函数,并且我们将该匿名函数赋值给了变量 f。
接着,我们只需要使用变量 f 加小括号的形式来调用我们定义的匿名函数,并且在 () 里面我们传入了 10 和 20,即 10 和 20 是这个匿名函数的参数,结果输出了这两个参数的和。
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)
})
}
程序运行后,控制台输出如下:
我们定义了一个带两个参数的函数 walk,第一个参数是一个 int 切片,第二个参数是一个带 int 类型参数的匿名函数 callback,该函数的功能是使用 for 循环 遍历切片里的每一个数,并调用 callback。
接着,在 main 函数调用时,我们第一个参数传入了一个 int 切片,第二个参数传入了一个 int 类型参数的匿名函数,并在匿名函数里面当前当前遍历的值。
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)
}
程序运行后,控制台输出如下:
我们定义了一个带两个参数的函数 walk,第一个参数是一个 int 切片,第二个参数是一个带 int 类型参数的匿名函数 callback,该函数的功能是使用 for循环遍历切片里的每一个数,并调用 callback。
接着,我们定义了一个 print 函数,该函数的参数是一个 int 类型的变量。最后,在 main 函数调用时,我们第一个参数传入了一个 int 切片,第二个参数直接传入了我们定义的 walk 函数,并在匿名函数里面当前当前遍历的值。
Go 语言的匿名函数可以直接赋值给变量, 也可以作为函数的参数,传递给函数。Go 语言匿名函数赋值给变量语法:
f = func(paramters)(returnvals){
//do something
}
Go 语言匿名函数做参数语法:
func walk(lis []int, callback func(int)){
}