【问题标题】:Referencing package main in a subpackage在子包中引用包 main
【发布时间】:2015-02-06 21:23:33
【问题描述】:

刚接触 Golang,有一个看似简单的问题。如果我在项目根目录的主包(并在logger.go 中定义)中有一个记录器,我如何在子包中引用该记录器(即:我的routes package)?

我的目录结构是:

  • main.go
  • logger.go
  • routes\routes.go
  • ...

我认为如果 Logger 是公共的,它已经可用于路由,但我在 routes.go 中得到“未定义:Logger”。如果我尝试在 routes.go 中导入我的主包,我会收到“不允许导入循环”错误,因为 routes.go 导入包主包和 main.go 导入包路由。

任何帮助将不胜感激!

【问题讨论】:

    标签: go


    【解决方案1】:

    解决此问题的唯一方法是将共享记录器移至第三个包并将其导入mainroutes。否则你会得到一个循环依赖,正如你所见,这是不允许的。

    只需添加一个名为logger 的文件夹并将您的记录器放入其中。现在将其导入其他 2 个包中,您就完成了。

    【讨论】:

    • 嗯,这似乎是不必要的复杂!人们是否为每个实用程序制作软件包?
    • @KyleChadha 是的。这是人们应该做的,也是你应该做的。
    • @KyleChadha 当然,另一种选择是将路线保持在同一个包中。
    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 2021-08-24
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多