[Go实战]go 闭包

14 阅读1分钟
package main

import (
	"fmt"
	"strings"
)

//累加器
func AddUpper() func(int) int {
	var n int = 10
	return func(x int) int {
		n = n + x
		return n
	}
}

func RecheckFileName(suffix string) func(string) string {
	return func(fileName string) string {
		if !strings.HasSuffix(fileName, suffix) {
			return fileName + suffix
		}
		return fileName
	}
}

func main() {
	//闭包简单使用
	f := AddUpper()
	fmt.Println(f(1))
	fmt.Println(f(2))
	fmt.Println(f(5))

	//闭包复杂使用
	f2 := RecheckFileName(".jpg")
	fmt.Println(f2("tech"))
	fmt.Println(f2("hello.jpg"))
}

运行结果