如何在go-lang中跨包共享变量

时间:2015-10-06 13:13:38

标签: go

我编写了一个简单的go应用程序并将其格式化为多个包。

+main
+controllers
+handlers
+commons
+utils

我在主程序包中启动服务器并在启动时读取服务器特定的参数。

我不会使用这些参数,例如来自commons包的DB属性。我无法将主包导入到commons'因为commons是对控制器的依赖,处理程序是对main的依赖。所以这会导致循环导入。

我们应该如何处理这种情况?是否可以读取配置一次并在需要时在commons包内引用它?示例会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用配置包,当您需要使用配置变量时,您可以将另一个结构发送到不同的包中。

main() {
    config := config{}
    user = NewUser(config)
    ...
}

我建议您查看配置revel包(https://github.com/revel/config)。它被用于狂欢框架https://github.com/revel/revel