在Go中访问包中的全局变量

时间:2014-03-29 18:46:50

标签: scope go package

我在package main的全局范围内有两个变量,那些是:

var (
    app Application
    cfg Config
)

现在,由于我的应用程序的大小开始增加,我决定将网站的每个模块放在自己的包中,就像子目录一样:

/src/github.com/Adel92/Sophie
  + user/   (package user)
     - register.go
     - login.go
     - password.go
  + topic/  (package topic)
     - ... etc
  - main.go (package main)

如何从其他软件包中访问appcfg个全局变量?这是错误的方法吗?我有一种感觉。

在这种情况下,我如何在自己的命名空间中声明函数,这样我就不必为所有时间都附加usertopic的名称发疯。

提前致谢。

1 个答案:

答案 0 :(得分:8)

导出大写变量名以便在其他包中访问,因此AppCfg可以正常工作。但是,通常不建议使用子包用于名称间距;软件包适用于离散的,独立的功能,因此使用它们通常比使用它们更麻烦(例如,导入周期是绝对不可能的,所以如果这个布局中有两个子软件包需要与之交谈彼此然后你运气不好。

如果您发现需要为usertopic添加前缀以避免名称冲突,那么可能会将基础概念纳入其自己的包中,并且您可以创建一个user的实例和topic的实例?