Go语言 闭包的最佳实践 (Golang经典编程案例)


闭包 :一个函数和与其相关的引用环境组合的一个整体。

最佳实践 :编写一个程序,具体要求如下:

  1. 编写一个函数 makeSuffix(suffix string) ,可以接收一个文件后缀名(比如.jpg),并返回一个闭包;
  2. 调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如 .jpg),则返回 文件名.jpg,如果有 .jpg后缀,则返回源文件名;
  3. 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"))
}

执行结果如下图所示:

Go语言 闭包的最佳实践 (Golang经典编程案例)介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/cui_yonghua/article/details/93645557?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163479651116780366526677%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163479651116780366526677&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-10-93645557.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450