• go:匿名函数


    1. 简介

      当不想给函数命名时,可以使用匿名函数,匿名函数不能独立存在,必须将匿名函数赋值给某个变量,然后通过这个变量调用对应的匿名函数;

      示例:

    func main() {
    
        fpx:= func(x,y int)(z int) {
            return x+y
        }
        fmt.Println(fpx(1,2))
    }

      输出结果:3

    2. 将匿名函数作为返回值

    2.1 普通匿名函数

    func main() {
    
        fpx:=Add2() // 返回 Add2() 中 return 的函数,即 b +2 
        z := fpx(1) // 将 1 传入函数,即 1 + 2 = 3
        fmt.Println(z)
    }
    
    func Add2() func(b int) int {
        return func(b int) int {
            return b + 2
        }
    }

    2.2  匿名函数引用外部函数变量

      引用闭包时,在这个引用的生命周期内,程序会存储闭包中引用的外部函数变量(此时该变量类似于全局变量),直到闭包的生命周期结束。

    func main() {
    
        // 引用闭包时,在这个引用的生命周期内,程序会存储闭包中引用的外部函数变量(此时该变量类似于全局变量)
        aa := append("q")
        fmt.Println(aa("w"))
        fmt.Println(aa("e"))
        fmt.Println(aa("r"))
    }
    
    func append(a string) func(b string) string {
        var s = a
        return func(b string) string {
            s = s + b
            return s
        }
    }

    输出结果:

     2.3 工厂函数

      如果需要创建较多功能类似的函数时,可以通过闭包的形式创建一个工厂函数;

      示例:创建一个给文件名添加不同后缀的工厂函数

    func main() {
    
        suffixTxt := makeAppendSuffix("txt")
        fmt.Println(suffixTxt("a"))
        fmt.Println(suffixTxt("b"))
        suffixMp4 := makeAppendSuffix("mp4")
        fmt.Println(suffixMp4("xx"))
        fmt.Println(suffixMp4("zz"))
    
    }
    
    func makeAppendSuffix(suffix string) func(name string) (totalName string) {
        return func(name string)(totalName string) {
            return name + "." + suffix
        }
    }

    输出结果:

  • 相关阅读:
    李彦宏:创业成功五招即可
    JS无聊之作——换肤切换样式
    从3个科技公司里学到的57条经验(转载)
    早该知道的7个JavaScript技巧
    ASP.NET Cookie 概述
    曝光SEO高手藏在内心的SEO秘籍
    18种最实用的网站推广方法大全
    javascript的IE和Firefox兼容性问题
    增加反向链接的35个技巧
    常用JS片段
  • 原文地址:https://www.cnblogs.com/virgosnail/p/12931895.html
Copyright © 2020-2023  润新知