闭包:一个函数和与其相关的引用环境组合的一个整体。
最佳实践:编写一个程序,具体要求如下:
- 编写一个函数
makeSuffix(suffix string)
,可以接收一个文件后缀名(比如.jpg),并返回一个闭包; - 调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如 .jpg),则返回
文件名.jpg
,如果有 .jpg后缀,则返回源文件名; strings.HasSuffix
,该函数可以判断某个字符串是否有指定的后缀。
代码如下:
package main
import (
"fmt"
"strings"
)
func makesuffix(suffix string) func(string) string {
return func(name string) string {
//如果name没有指定的后缀,则加上,否则就返回原来的名字
if !strings.HasSuffix(name, suffix) {
return name + suffix
}
return name
}
}
func main() {
f2 :=makesuffix(".jpg")
fmt.Println("文件名处理后=", f2("winter"))
fmt.Println("文件名处理后=", f2("bird.jpg"))
}
执行结果如下图所示: