一尘不染

Go中的静态局部变量

go

是否可以在Go中定义一个局部变量,该局部变量可以从一个函数调用到另一个函数保持其值?在C语言中,我们可以使用保留字static

在C中的示例:

int func() {
    static int x = 0; 
    x++;
    return x;
}

阅读 877

收藏
2020-07-02

共1个答案

一尘不染

使用闭包

函数文字是闭包:它们可以引用周围函数中定义的变量。然后,这些变量在周围的函数和函数文字之间共享,并且只要可以访问它们就可以保留。

它不必在全局范围内,只需在函数定义之外即可。

func main() {

    x := 1

    y := func() {
        fmt.Println("x:", x)
        x++
    }

    for i := 0; i < 10; i++ {
        y()
    }
}

去操场上的样本)

2020-07-02