我刚刚开始学习GO开发,阅读了很多文章和文档,但是还没有找到具体的答案。
有一些问题
./../
不起作用,我可以将所有源代码放在vendror/src
目录下,但这会使我的项目结构看起来像我想要的我知道这个问题已经被问过几次了,但是我还没有找到完整的答案。
我将不胜感激。谢谢
答案 0 :(得分:2)
首先:阅读“如何编写Go代码”并坚持并仅遵循它。
go工具没有“本地软件包”。忘记本地,非本地,远程(无论如何)的区别。对于go工具,只有软件包,并且这些软件包都有导入路径。此导入路径确定go工具将在文件系统中查找代码的位置。如果导入路径为import "int.microsoft/secret/new/foo"
,则软件包foo的代码必须位于计算机上的$ GOPATH / src / int.microsoft / secret / new / foo”下。
对于go build
和(进行安装,进行测试,...),在导入路径中根本没有 no 的含义:“ int.microsoft/secret/new/foo”除了“ example1 / foo”或“ github.com/someone/tool7/bar”外,没有其他字符串。这些只是字符串,并且在这些路径中搜索软件包。这些软件包都不是“本地”软件包,它们都只是软件包。
因此,如果将代码包“ whatever”的代码放在$ GOPATH / src / some / strange / path / every下,则必须像import "some/strange/path/whatever"
那样导入它。
如果要与其他人共享代码,请保留远程备份,或者要使用github之类的代码托管站点来简化三个工作站的同步,则可以将代码上传到例如github。这与您导入软件包的方式无关。
go工具中的 only 子命令,其中导入路径除了作为go get
的路径之外,还有其他含义,它Login
知道一些代码托管站点,例如github并解释了导入路径“ github.com/someone/prjct”,并可以为您克隆此git repo,方便地将其放置在$ GOPATH下的正确文件夹中。
因此:否。绝对没有必要上传每一段代码。 (例如,我的机器上$ GOPATH / src / tmp下有很多东西。)
将代码拆分为a)不同的程序包和b不同的文件与此无关。只要您觉得方便又合乎逻辑就可以。
好吧,不;简单,因为您不能将多个文件保存在一个文件中。您是说“一个文件夹中有几个文件”吗?是的,那很好。如果可以进行拆分,请拆分为文件和软件包。看看标准库或任何其他开源项目。
答案 1 :(得分:0)
您的导入路径必须使用$GOPATH/libPath
语法有效
为此,您可以根据需要共享服务源代码,并且可以使用多个主程序包来分隔bin
如果按第二个文件表示目录,则没有最佳实践,只要它不涉及代码复杂性,您也可以这样做