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

Jes*_*nds 7 scope package go

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

var (
    app Application
    cfg Config
)
Run Code Online (Sandbox Code Playgroud)

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

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

我如何绕过从其他包访问appcfg全局变量?这是错误的方法吗?我有一种感觉.

在这种情况下,我怎么会在声明自己的命名空间功能,所以我没有发疯具有固定其名称usertopic所有的时间.

提前致谢.

Eva*_*van 8

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

如果你发现你需要前缀的东西user,并topic为了避免名称冲突,那么也许下面的概念应被纳入了自己的包,您可以创建它的一个实例user,一个用于topic

  • 如果用户/主题严重依赖于main中的功能,则表明它们应属于主程序包.因为你不能有依赖循环,所以依赖只能从main"向下"流动. (3认同)