匿名函數與閉包
尚硅谷Golang課

匿名函數

func main() {
	res := func(n1, n2 int) int {
		return n1 + n2
	}(10, 20)
	fmt.Println(res)
	a := func(n1, n2 int) int {
		return n1 - n2
	}
	res = a(10, 5)
	fmt.Println(res)
}

閉包

//累加器
func Add() func(int) int { //Add是一個函數,返回的數據類型是func(int) int

	var n int = 10 //返回的是一個匿名函數,那這個函數用到函數外的n,因此形成一個整體稱為閉包
	return func(x int) int {
		n = n + x
		return n
		//閉包是類,函數是操作,n是字段,函數+使用n構成閉包
		//n只初始化一次
	}
}
func main() {
	a := Add()
	fmt.Println(a(1))
	fmt.Println(a(2))
	fmt.Println(a(3))

}

案例2

func makeSuffix(suffix string) func(string) string {
	return func(name string) string {
		if !strings.HasSuffix(name, suffix) {
			return name + suffix
		}
		return name
	}
}
func main() {
	f := makeSuffix(".jpg")
	fmt.Println(f("654"))
	fmt.Println(f("123.jpg"))

}

上次修改於 2021-08-01

此篇文章的評論功能已經停用。