从其他包访问主包
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对外共享数据