闭包

一个函数和与其相关的引用环境组合而成的实体

package main

import(
    "fmt"
)

func Addr() func(int) int{
    var x int
    return func(d int) int{
        x += d
        return x
    }
}


func main(){
    f := Addr()
    fmt.Println(f(1))
    fmt.Println(f(100))
    fmt.Println(f(1000))
}

输出:
1
101
1101
package main

import(
    "fmt"
    "strings"
)

func makeSuffixFunc(suffix string) func(string) string{
    return func(name string) string{
        if !strings.HasSuffix(name,suffix){
            return name + suffix
        }
        return name
    }
}

func main(){
    func1:=makeSuffixFunc(".bmp")
    func2:=makeSuffixFunc(".jpg")
    fmt.Println(func1("test"))
    fmt.Println(func2("test"))
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.首先,什么是闭包 先看这么一个图: G,F,N 分别代表三个层次的函数,a,b,c分别是其中的变量。正常情况下...
    公公明阅读 1,549评论 0 3
  • 相信学习 JavaScript 的同学都知道「闭包(Closure)」,这个概念在 JavaScript 中是非常...
    ikook阅读 504评论 0 1
  • 这两天学习的时候对python中的闭包产生了兴趣,网上这篇文章写得很好,写在这里大家看看。 1. 闭包的概念 首...
    Alistair阅读 276评论 0 0
  • 继续一个人自言自语_。 今天想聊聊 JavaScript 的作用域,以及“闭包”。当然,仍旧带着我的个人特色。 作...
    NARUTO_86阅读 458评论 5 5
  • 当大人太累, 所以,还是做个简简单单的孩子。
    深夜失眠症阅读 159评论 0 0