一尘不染

全局变量私有文件

go

在GOLANG中,是否有办法使变量的作用域在包中的文件本地?就我而言,有2个文件ex1.go和ex02.go。ex01.go定义了一个全局变量

var wg sync.WaitGroup

在该文件中的所有功能之间使用。

在另一个文件ex02.go中(除了ex01.go和ex02.go属于同一类问题(即并发性),它与ex01.go无关),我无法为waitGroup定义一个变量,如下所示:

var wg sync.WaitGroup

我收到一个错误-“在此块中重新声明了变量名”

有没有一种方法可以防止变量名溢出到其他文件中?


阅读 179

收藏
2020-07-02

共1个答案

一尘不染

出于可变作用域的目的,文件在Go中没有意义。可以将包中的所有文件都看作是串联在一起的,这(简化)正是编译之前发生的情况。

这意味着:不,无法将变量定义范围。

如果需要两个global WaitGroup,则需要将它们定义为单个变量。

2020-07-02