英文:
How can I implement C static variable into Go code?
问题
我正在尝试将一段C代码改写为Go,并遇到了一个静态变量。我想知道如何在Go中实现与C中静态变量等效的功能。它是否存在?如果存在,是什么?如果不存在,那么处理这个问题的首选方式是什么?
以下是我想要转换为Go的C代码:
#include <stdio.h>
int func();
int main() {
printf("%d", func());
printf("\n%d", func());
return 0;
}
int func() {
static int count = 0;
count++;
return count;
}
输出:
1
2
英文:
I am trying to re-write a piece of C code into Go and I stumbled upon a static variable. I am wondering how I can achieve the Go's equivalent of C's static variable. Does it exist? If so, what's that? If not, then what would be the preferred way of handling this matter?
Here's the C code that I want to convert into Go:
#include <stdio.h>
int func();
int main() {
printf("%d", func());
printf("\n%d", func());
return 0;
}
int func() {
static int count = 0;
count++;
return count;
}
Output:
1
2
答案1
得分: 2
你可以使用闭包函数来实现这个功能。
func incrementer() func() int {
count := 0
return func() int {
count++
return count
}
}
func main() {
increment := incrementer()
fmt.Printf("%d\n", increment())
fmt.Printf("%d", increment())
}
输出结果:
1
2
你可以在这里了解更多关于闭包的信息:闭包函数
英文:
You can use closure function for that.
func incrementer() func() int {
count := 0
return func() int {
count++
return count
}
}
func main() {
increment := incrementer()
fmt.Printf("%d\n", increment())
fmt.Printf("%d", increment())
}
Output:
1
2
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论