package main import "fmt" func main() { sumFun := func(num1, num2 int) int { return num1 + num2 } sum := sumFun(10, 20) fmt.Println(sum) return }
./hello 30
package main import "fmt" func main() { func(name string) { fmt.Println("Hello", name) }("TOMOCAT") return }
./hello
Hello TOMOCAT
可以定义一个接收匿名函数参数的函数,实现回调的效果。
package main import "fmt" /* 求和并调用callback函数对结果进行特殊处理 */ func sumWorker(data []int, callback func(int)) { sum := 0 for _, num := range data { sum += num } callback(sum) } func main() { // 打印出求和结果 sumWorker([]int{1, 2, 3, 4}, func(a int) { fmt.Println("sum:", a) }) // 判断求和结果是否大于100 sumWorker([]int{1, 2, 3, 4}, func(a int) { if a > 100 { fmt.Println("sum > 100") } else { fmt.Println("sum <= 100") } }) }
sum: 10 sum <= 100
闭包是由函数及其相关引用环境组成的实体,可以理解为一个函数“捕获”了和它处于同一作用域的其他变量。
Golang中所有的匿名函数都是闭包。
原文:https://www.cnblogs.com/dream397/p/15035814.html