Go语言基础教程:闭包

在这篇教程中,我们将通过一段简单的 Go 语言代码来理解闭包的概念。闭包是编程中非常强大且常用的工具,尤其适合实现像计数器这样的逻辑。我们将逐行讲解代码,并理解如何在 Go 中利用闭包来保存函数状态。

Go 复制代码
package main

import "fmt"

// intSeq 返回一个函数,该函数每次调用时会增加一个整数
func intSeq() func() int {
    i := 0  // 初始化一个局部变量 i
    return func() int {  // 返回一个匿名函数
        i++  // 闭包中每次调用这个函数都会将 i 增加 1
        return i
    }
}

func main() {

    // 创建一个新的计数器函数,并将其赋值给 nextInt
    nextInt := intSeq()

    // 调用 nextInt 函数多次,查看 i 的累加效果
    fmt.Println(nextInt()) // 输出: 1
    fmt.Println(nextInt()) // 输出: 2
    fmt.Println(nextInt()) // 输出: 3

    // 创建一个新的计数器,观察其与 nextInt 是否独立
    newInts := intSeq()
    fmt.Println(newInts()) // 输出: 1
}
相关推荐
Dontla2 分钟前
go语言Windows安装教程(安装go安装Golang安装)(GOPATH、Go Modules)
开发语言·windows·golang
chushiyunen2 分钟前
python rest请求、requests
开发语言·python
铁东博客9 分钟前
Go实现周易大衍筮法三变取爻
开发语言·后端·golang
baidu_huihui10 分钟前
在 CentOS 9 上安装 pip(Python 的包管理工具)
开发语言·python·pip
南 阳12 分钟前
Python从入门到精通day63
开发语言·python
lbb 小魔仙12 分钟前
Python_RAG知识库问答系统实战指南
开发语言·python
oak隔壁找我35 分钟前
SpringBoot中MyBatis的Mapper的原理
后端
oak隔壁找我1 小时前
Spring Boot 自动配置(Auto-configuration)的核心原理
后端
oak隔壁找我1 小时前
Java的JAR包
后端
GetcharZp1 小时前
告别 TCP 握手延迟!让你的 Go 服务瞬间拥抱 HTTP/3 时代
后端