閉包小案列

//閉包 保護了n 變量不會每次初始化;
func testClosure() func(int) int {
	var n int  = 10
	return func(x int) int {
		n = x + n
		return n
	}
}

func makeSuffix(suffix string) func (name string) string {
	return func(name string) string {
		if strings.HasSuffix(name, suffix) {
			return name;
		}
		return name + suffix
	}
} 

	f  := testClosure()
	fmt.Println(f(1)) //11
	fmt.Println(f(2)) //13

	f2 := makeSuffix(".jpg")
	fmt.Println(f2("test")) //test.jpg
	fmt.Println(f2("a.jpg")) //a.jpg
相關文章
相關標籤/搜索