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

C语言中的示例:

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

推荐答案

使用closure:

函数文字是闭包:它们可以引用在 周围的功能.然后,这些变量在 包围函数和函数文字,它们作为 只要他们是可以接近的.

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

func main() {

    x := 1

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

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

(Go Playground号上的样本)

Go相关问答推荐

使用Gorm创建自定义连接表

为什么在GO中打印变量会导致堆栈溢出?

如何在链接中写入链接

go中跨域自定义验证的问题

如何使用 go 读取 RDF xml 文件中的 XML 命名空间属性

Cypher 查找(多个)最低 node

go-chi: 接受带有反斜杠的 url 路径参数

如何从Go项目连接Microsoft Access数据库?

如何在 Golang 中打印 2 列表?

如何从 Asterisk Manager Interface Event 获取活动呼叫数

将 struct 转换为 CSV 字符串

Go 的垃圾收集器在使用时删除 ZeroMQ 套接字

在 Go 中公开公共 JWK

通过环境变量配置 OTLP 导出器

具有两个或多个模型的 GORM 查询

golang pic.ShowImage 为什么它不生成图像而是向我发送base64值

如何在 helm 中将字符串连接到 .AsConfig 的结果?

Golang - 无法从 pipped Windows 命令中获取结果

泛型:对具有返回自身的函数的类型的约束

我应该明确地创建一个与Belongs To或Has Many对称的关系吗?