首页 > 其他分享 >Go - closure

Go - closure

时间:2023-09-30 10:22:05浏览次数:28  
标签:closure count fmt Println func Go main outerFunc

 

package main

import "fmt"

func main() {
    for i := 0; i < 3; i++ {
        fmt.Println(outerFunc()())
    }

    fmt.Println("------------------------")

    next := outerFunc()
    for i := 0; i < 3; i++ {
        fmt.Println(next())
    }
}

func outerFunc() func() int {
    count := 0

    return func() int {
        count++
        fmt.Printf("**%d**\n", count)
        return count
    }
}

 

zzh@ZZHPC:/zdata/MyPrograms/Go/testing$ go run main.go
**1**
1
**1**
1
**1**
1
------------------------
**1**
1
**2**
2
**3**
3

 

标签:closure,count,fmt,Println,func,Go,main,outerFunc
From: https://www.cnblogs.com/zhangzhihui/p/17737647.html

相关文章

  • Go - Logging to the System Log Service
    Problem: Youwanttologintothesystemloginsteadofyourlogfiles.Solution: Usethelog/syslogpackagetowritetosyslog. Syslogisastandardnetwork-basedloggingprotocol.Ithaslongbeenthedefactostandardforloggingsystemeventsand......
  • Go每日一库之147:goldmark(Markdown转html)
    简介使用Markdown书写结构化的文档和评论已经相当流行了,Web服务需要将用户编写的Markdown文本转换为html以便浏览器渲染,还常常需要对Markdown语法进行自定义扩展以实现个性化的功能。本期要介绍的**goldmark**就是Go生态中的一款Markdown解析器和扩展器,与GitHub......
  • 进化算法中的遗传算法(Genetic Algorithms)
    进化算法中的遗传算法(GeneticAlgorithms)引言进化算法是一类基于自然进化原理的优化算法,通过模拟生物进化过程中的选择、交叉和变异等操作,来求解复杂问题。遗传算法(GeneticAlgorithms)是进化算法中最为经典和常用的一种方法。本文将介绍遗传算法的基本原理、核心操作和应用领域,以及......
  • Go每日一库之169:dongle(编解码、加解密)
    一个轻量级、语义化、对开发者友好的golang编码解码、加密解密库。安装使用//使用github库goget-ugithub.com/golang-module/dongleimport("github.com/golang-module/dongle")//使用gitee库goget-ugitee.com/golang-module/dongleimport("g......
  • Go每日一库之168:redsync(redis分布式锁)
    今天给大家推荐的是基于redis的Go版本的分布式锁工具:redsync。该工具也是redis官网上推荐的。redsync基于redis的高可用、高性能、防死锁、防误删的分布式锁实现,具有高性能、高可用、防死锁、防误删的特点。一、分布式锁基础知识什么是分布式锁锁,在编程语言中就是一个变量,该变......
  • Go每日一库之167:emoji(emoji表情)
    大家在使用微信或钉钉聊天时,一定使用过表情符号。今天就给大家介绍一个能够在终端上显示emoji表情符号的包:emoji。实现原理:emoji表情符号实际上就是在unicode编码表中有定义的一个编码。通过将符号的文字表示和对应的unicode编码进行一一对应,在使用时对文字符号进行替换成rune字......
  • Go每日一库之187:singleflight(合并重复调用)
    本文主要介绍Go语言中的singleflight包,包括什么是singleflight以及如何使用singleflight合并请求解决缓存击穿问题。singleflight目前(Go1.20)还属于Go的准标准库,它提供了重复函数调用抑制机制,使用它可以避免同时进行相同的函数调用。第一个调用未完成时后续的重复调用会等待,当第......
  • Go每日一库之186:sonic(高性能JSON库)
    介绍我们在日常开发中,常常会对JSON进行序列化和反序列化。Golang提供了encoding/json包对JSON进行Marshal/Unmarshal操作。但是在大规模数据场景下,该包的性能和开销确实会有点不够看。在生产环境下,JSON序列化和反序列化会被频繁的使用到。在测试中,CPU使用率接近10%,其中极端情况......
  • Go每日一库之184:katana(新一代爬虫框架)
    项目链接https://github.com/projectdiscovery/katana项目简介katana是一个使用golang编写的新一代爬虫框架,支持HTTP和headless抓取网页信息不仅可以作为库集成到Golang项目,还可以通过命令行直接抓取,对于有一些轻量级的抓取任务的开发者配合jq一起使用简直就是福......
  • Go每日一库之183:vegeta(http压力测试工具库)
    项目地址:https://github.com/tsenart/vegetahttps://mp.weixin.qq.com/s/J0PiqTifr_rs_S2CzMRoWg......