目 录CONTENT

文章目录

Go | 匿名,回调函数,闭包

RobKing
2023-08-26 / 0 评论 / 0 点赞 / 223 阅读 / 239 字

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 
}

参考:
GO高阶函数:匿名函数、回调函数和闭包

0

评论区