理解Golang的闭包

发布时间 2023-10-31 21:10:55作者: ashet

闭包是指一个函数值(function value),它可以引用其函数体之外的变量

闭包代码示例

func makeSuffix() func(str string) string {
	var suffix = ".jpg"
	return func(str string) string {
		if strings.HasSuffix(str, suffix) {
			return str
		} else {
			// 引用函数体之外的变量suffix
			return str + suffix
		}
	}
}

func main() {
	// 创建闭包函数
	closure := makeSuffix()
	// 调用闭包函数
	fmt.Println(closure("this"))
	fmt.Println(closure("that.jpg"))
}

个人理解:通过变量+函数function巧妙地调用了函数(在不修改函数function的条件下)