是否可以在 Go 中定义一个局部变量,它可以在一个函数调用到另一个函数时保持其值?在 C 中,我们可以使用保留字 static
来做到这一点。
C 中的示例:
int func() {
static int x = 0;
x++;
return x;
}
原文由 Gustavo Bittencourt 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以在 Go 中定义一个局部变量,它可以在一个函数调用到另一个函数时保持其值?在 C 中,我们可以使用保留字 static
来做到这一点。
C 中的示例:
int func() {
static int x = 0;
x++;
return x;
}
原文由 Gustavo Bittencourt 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以这样做
package main
import (
"fmt"
)
func main() {
f := do()
f() // 1
f() // 2
}
func do() (f func()){
var i int
f = func(){
i++
fmt.Println(i)
}
return
}
操场上的链接 https://play.golang.org/p/D9mv9_qKmN
原文由 Tarik 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答909 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.2k 阅读
使用 闭包:
它不必在全局范围内,就在函数定义之外。
( 移动游乐场 示例)