猿问

在 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)

我怎么会去周围四处访问app,并cfg从其他包全局变量?这是错误的方法吗?我有一种感觉。


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


临摹微笑
浏览 436回答 1
1回答

UYOU

大写的变量名导出为其他包访问,因此App并Cfg会工作。但是,通常不建议使用子包进行名称间距;包用于离散的、自包含的功能,因此以这种方式使用它们通常比使用它们更麻烦(例如,导入循环是绝对不可能的,因此如果您在此布局中有两个子包需要与之交谈彼此然后你就不走运了)。如果你发现你需要用userand前缀topic来避免名称冲突,那么也许底层概念应该被考虑到它自己的包中,你可以创建它的一个实例 foruser和一个 for topic?
随时随地看视频慕课网APP

相关分类

Go
我要回答