有没有可能在Go中定义一个局部变量,它可以在一个函数调用到另一个函数调用时保持它的值?在C中,我们可以使用保留字static
来做到这一点。
C语言示例:
int func() {
static int x = 0;
x++;
return x;
}
发布于 2015-05-31 21:37:29
在全局范围内声明一个var:
var i = 1
func a() {
println(i)
i++
}
发布于 2016-05-19 06:27:18
你可以这样做
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
}
发布于 2019-08-13 14:57:32
与塔里克的建议类似,但staticCounter()返回一个整型函数
package main
import (
"fmt"
)
func staticCounter() (f func()(int)){
var i int
f = func()(int){
i++
// fmt.Println(i)
return i
}
return
}
func main() {
f := staticCounter()
g := staticCounter()
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Println(g())
fmt.Println(g())
}
https://stackoverflow.com/questions/30558071
复制相似问题