scope - 在 Go 中跨包访问变量

标签 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 的名称时间。

最佳答案

大写的变量名被导出以便在其他包中访问,因此 AppCfg 可以工作。但是,通常不推荐使用子包来命名空间;包旨在用于离散的、独立的功能,因此以这种方式使用它们通常比使用它们更麻烦(例如,导入周期是绝对不可能的,因此如果您在这种布局中有两个子包需要与彼此那么你就不走运了)。

如果您发现需要使用 usertopic 作为前缀以避免名称冲突,那么也许应该将基本概念纳入其自己的包中,您可以为 user 创建一个实例,为 topic 创建一个实例?

关于scope - 在 Go 中跨包访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22735325/

相关文章:

ruby 错误 : Not Finding Variable Defined in Loop

javascript - 了解 Javascript 调用函数与返回函数但稍后执行函数之间的区别

javascript - 指导手动简化变量和函数的工具?

pointers - big.Int 和 *big.Int 之间的区别,以及如何按值传递 big.Int

python - 如何在多个文件中导入常量

C++ 指针/对象错误

Golang API 到 WPA 请求方

go - SSH 脚本使用 pty 和 io.Copy 通过菜单流式输出

java - 如何在一个java文件中导入多个包?

swift - 在swift中判断一个目录是一个包