一尘不染

在Go中跨包访问变量

go

我有两个变量,范围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所有的时间。


阅读 603

收藏
2020-07-02

共1个答案

一尘不染

大写的变量名导出为其他包访问,因此AppCfg会工作。但是,一般不建议使用子包进行名称间隔。软件包旨在用于离散的独立功能,因此通常比使用这种方法要麻烦得多(例如,导入周期是绝对不可能的,因此,如果在此布局中有两个子软件包需要与之通信对方,那么您就不走运了。

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

2020-07-02