package mainimport ( "fmt" "strings")//利用匿名函数和闭包实现文件后缀批改func makeSuffix(suffix string) func (string) string{ return func (fileName string) string{ //如果文件后缀不是以suffix结尾,则加上后缀,否则返回原文件名 if !strings.HasSuffix(fileName, suffix) { return fileName + suffix } return fileName }}func main(){ f := makeSuffix(".jpg") fileName1 := "file.jpg" fileName2 := "file" fmt.Println(f(fileName1)) fmt.Println(f(fileName2))}
执行后果
file.jpgfile.jpg
阐明
这里makeSuffix返回的匿名函数f和作为内部传入的参数".jpg"独特形成了一个闭包,使得在传入一次".jpg"的状况下能够重复使用,这就奇妙的用到了闭包中保留上次应用的值的个性代替了重复传值的问题。