从其他包访问主包

Posted

技术标签:

【中文标题】从其他包访问主包【英文标题】:Access main package from other package 【发布时间】:2017-11-09 06:57:00 【问题描述】:

我想从另一个包访问主包,但这是不可能的,因为主文件不在目录中。我已经尝试将主文件放在一个目录中,但是当我尝试导入它时,我收到了这个错误:import "../main" is a program, not an importable package

我想要这个的原因是因为我有一个 tcp 服务器和一个 web 服务器一起工作。 webserver可以通过main包获取tcp server,tcp server可以通过main包获取webserver。

我已经让它与 webserver 和 tcpserver 一起工作(中间没有主包),但我想将应用程序的某些部分保留在一个地方。

我想要的东西可能吗(通过主包)?还是只是愚蠢。

【问题讨论】:

在不知道具体情况的情况下,听起来您应该将 webserver 放在“package webserver”下,将 tcp server 放在“package tcpserver”下。然后,您可以启动一个导入这两个库的 go 程序。我不相信您已经在“主包”中时能够导入另一个包的“主包”。 【参考方案1】:

你不能 import main 包。任何共享代码都应该放在单独的包中,可以通过main(和其他包)导入。

【讨论】:

参见groups.google.com/forum/#!topic/Golang-nuts/frh9zQPEjUk 进行讨论。 @Adrian 如果您有需要在main 中初始化的东西,例如记录器(pkg.go.dev/go.uber.org/zap#example-package-Presets),该怎么办?例如,你不能在实用程序包中拥有它,因为你不能运行main() 然后main 应该将它传递给它调用的函数/方法。

以上是关于从其他包访问主包的主要内容,如果未能解决你的问题,请参考以下文章

黎活明8天快速掌握android视频教程--20_采用ContentProvider对外共享数据

iOS 将文件从主包复制到文档目录

如何从 Netbeans 中的特定包(无主包)创建 .jar?

将文件夹从主包复制到 iphone 中的文档目录

Cocoa - 从非主包加载资源

从主包复制到应用程序支持 swift