MST
星途 面试题库

面试题:Go语言中闭包的基本定义与简单应用

请简述Go语言中闭包的定义,并编写一个简单的Go程序,利用闭包实现一个计数器功能,每次调用计数器函数返回值自增1。
17.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试

闭包定义

在Go语言中,闭包是一个函数值,它可以引用其函数体外部的变量。闭包允许在一个函数内部定义另一个函数,并访问和操作外部函数的局部变量,即使外部函数已经返回,这些变量依然可以被内部函数访问和修改。

示例代码

package main

import "fmt"

// Counter 函数返回一个闭包,该闭包实现计数器功能
func Counter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

你可以使用以下方式调用这个闭包:

func main() {
    c := Counter()
    fmt.Println(c()) // 输出: 1
    fmt.Println(c()) // 输出: 2
    fmt.Println(c()) // 输出: 3
}

在上述代码中,Counter 函数返回一个匿名函数,这个匿名函数形成了闭包,它可以访问并修改 Counter 函数内部的 count 变量。每次调用返回的闭包函数,count 变量的值都会自增并返回。