Go语言-闭包
程序员文章站
2022-03-25 09:53:19
...
使用闭包实现一个小功能。判断给定的文件名是否带有后缀,如果有指定后缀就直接输出,如果不带后缀就添加后缀后,输出文件名
package main
import (
"fmt"
"strings"
)
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("xing"))
fmt.Println("处理后的文件名 = ", f("demo.jpg"))
}
程序的输出为:
处理后的文件名 = xing.jpg
处理后的文件名 = demo.jpg
总结:
1、返回的匿名函数和makeSuffix中的suffix形参组成了闭包
2、在这个例子中使用闭包,我们只需要传入一次后缀名,就可以反复使用。而使用传统的函数,也能实现这个功能,但是需要每次调用函数时,都需要传入后缀名
上一篇: 网传:近亿人有负债,上万家企业倒闭,其实“整体经济”发展良好
下一篇: Linux 登录、注销与关机