Golang中的匿名函数

Golang中的函数不能嵌套,但是在函数内部可以定义匿名函数,实现一下简单功能的调用。

所谓匿名函数就是,没有名称的函数。

语法格式如下:

1
func    (参数列表)(返回值)

当然可以既没有参数,可以没有返回值

匿名函数实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func main() {
max := func(a int, b int) int {
if a > b {
return a
} else {
return b
}
}
i := max(1, 2)
fmt.Printf("i: %v\n", i)
}

运行结果:

1
i: 2

自己执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {
max := func(a int, b int) int {
if a > b {
return a
} else {
return b
}
}(1, 2) //大括号后面跟小括号,自己调用自己
fmt.Printf("max: %v\n", max)
}

运行结果:

1
max: 2

用于在函数内部做一些运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import "fmt"

func f1() {
name := "weiyunfeng"
age := "22"
//在函数内部做一些运算
f2 := func() string {
return name + age
}
msg := f2()
fmt.Printf("msg: %v\n", msg)
}

func main() {
f1()
}

运行结果:

1
msg: weiyunfeng22