Go | 匿名,回调函数,闭包
匿名函数
简单来说就是没有名字的函数,比如说
func main () {
func(str string) {
fmt.Println("hello ", str)
}("world")
}
回调函数
简单来说就是函数的参数包括函数,比如说稳定排序函数:
func SliceStable(slice interface{}, less func(i, j int) bool)
// 按照结构体val降序
type S struct {
name string
val int
}
func main () {
arr := make([]S, 0)
less := func(i, j int) bool {
return S[i].val > S[j].val
}
sort.SliceStable(arr, less)
}
闭包
简单来说,闭包就是返回函数的函数,在一个函数内部定义另一个函数,内部的函数可以访问外部的变量。
比如:
func counter() func() int {
count := 0 // 这是外部函数的变量
// 内部函数是闭包
innerFunc := func() int {
count++ // 可以访问外部函数的变量
return count
}
return innerFunc
}
评论区