MST

星途 面试题库

面试题:Go中闭包与函数式编程结合的基础应用

请编写一段Go代码,使用闭包实现一个简单的计数器功能,并且在该闭包中体现函数式编程中纯函数的概念,即每次调用计数器函数,除了返回递增后的值,不产生其他副作用。
43.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

// NewCounter 创建一个计数器闭包
func NewCounter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

可以通过以下方式调用:

func main() {
    counter := NewCounter()
    fmt.Println(counter())
    fmt.Println(counter())
    fmt.Println(counter())
}

在上述代码中,NewCounter 函数返回一个闭包,该闭包内部维护一个 count 变量,每次调用闭包时 count 自增并返回,由于闭包仅依赖自身内部状态且每次调用返回结果只与内部状态有关,没有修改外部状态等副作用,符合纯函数概念。