匿名函数
1.1.1. 匿名函数
匿名函数是指不需要定义函数名的一种函数实现方式。1958年LISP首先采用匿名函数。
在Go里面,函数可以像普通变量一样被传递或使用,Go语言支持随时在代码里定义匿名函数。
匿名函数由一个不带函数名的函数声明和函数体组成。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。
package main import ( "fmt" "math" ) func main() { getSqrt := func(a float64) float64 { return math.Sqrt(a) } fmt.Println(getSqrt(4)) }
输出结果:
2
上面先定义了一个名为getSqrt 的变量,初始化该变量时和之前的变量初始化有些不同,使用了func,func是定义函数的,可是这个函数和上面说的函数最大不同就是没有函数名,也就是匿名函数。这里将一个函数当做一个变量一样的操作。
Golang匿名函数可赋值给变量,做为结构字段,或者在 channel 里传送。
package main func main() { // --- function variable --- fn := func() { println("Hello, World!") } fn() // --- function collection --- fns := [](func(x int) int){ func(x int) int { return x + 1 }, func(x int) int { return x + 2 }, } println(fns[0](100)) // --- function as field --- d := struct { fn func() string }{ fn: func() string { return "Hello, World!" }, } println(d.fn()) // --- channel of function --- fc := make(chan func() string, 2) fc <- func() string { return "Hello, World!" } println((<-fc)()) }
输出结果:文章来源:https://www.toymoban.com/news/detail-613750.html
Hello, World! 101 Hello, World! Hello, World!
参考:go匿名函数_golang_PHP面试网文章来源地址https://www.toymoban.com/news/detail-613750.html
到了这里,关于go匿名函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!