MST

星途 面试题库

面试题:Go语言中匿名函数的参数传递与闭包特性

请编写一个Go语言程序,包含一个匿名函数,该匿名函数接收两个整数参数并返回它们的和。同时,展示如何通过闭包在匿名函数中使用外部变量,并且解释闭包在此处的工作原理。
28.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

func main() {
    // 外部变量
    externalVar := 10

    // 匿名函数
    sumFunc := func(a, b int) int {
        // 闭包使用外部变量
        return a + b + externalVar
    }

    result := sumFunc(5, 3)
    fmt.Printf("结果: %d\n", result)
}

闭包在此处的工作原理:匿名函数 sumFunc 不仅捕获了传入的参数 ab,还捕获了外部变量 externalVar。即使 externalVar 的声明在匿名函数定义的外部,匿名函数也能记住并访问它在定义时 externalVar 的值。在Go语言中,闭包使得函数可以访问其词法环境中的变量,即使函数在定义它的环境之外被调用,这些变量的值依然有效。