我在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)
如何从其他软件包中访问app
和cfg
个全局变量?这是错误的方法吗?我有一种感觉。
在这种情况下,我如何在自己的命名空间中声明函数,这样我就不必为所有时间都附加user
和topic
的名称发疯。
提前致谢。
答案 0 :(得分:8)
导出大写变量名以便在其他包中访问,因此App
和Cfg
可以正常工作。但是,通常不建议使用子包用于名称间距;软件包适用于离散的,独立的功能,因此使用它们通常比使用它们更麻烦(例如,导入周期是绝对不可能的,所以如果这个布局中有两个子软件包需要与之交谈彼此然后你运气不好。
如果您发现需要为user
和topic
添加前缀以避免名称冲突,那么可能会将基础概念纳入其自己的包中,并且您可以创建一个user
的实例和topic
的实例?