所以我第一次开发了一个 go 应用程序。我开始知道有两个变量 GOROOT 和 GOPATH 用于维护 go 包。到目前为止,我的理解是 GOROOT 用于 go 二进制文件,而 GOPATH 主要用于存储项目所需的库和帮助程序包。这是我目前的项目结构 -/Users/john/work/project-mars/Users/john/work/project-mars/main.go/Users/john/work/project-mars/helper/Users/john/work/project-mars/helper/helper.gomain.go 的内容package mainimport ( "fmt" "helper")func main(){ fmt.Println("Hello")}helper.go 的内容package helperimport ( "fmt")func SayWorld(){ fmt.Println("World")}而 go 变量是 -GOROOT = /Users/john/apps/goGOPATH = /Users/john/apps/go-packages问题: 现在,当我执行以下命令时,出现此错误 -mac-machine:project-mars john$ go build main.go main.go:5:5: cannot find package "helper" in any of: /Users/john/apps/go/src/helper (from $GOROOT) /Users/john/apps/go-packages/src/helper (from $GOPATH)我知道 GOPATH 应该是我正在处理的项目目录。但是我担心以模块化方式保持我的项目和库包,以便以后我有一个完全不同的项目(即项目极光)可能使用相同的 github 帮助包时,它们不会被下载两次,都在project-mars 和 project-aurora 。在处理不同项目时如何避免这种冗余?更新:并不是我不能编译它们。我可以使用 GOPATH 作为我的项目目录并使用 src、pkg、bin 项目布局,并重新组织文件并最终编译项目。伊伊皮。但我的问题是关于解决以这种单一的 GOPATH 方式出现的常见包问题的冗余。
2 回答
梦里花落0921
TA贡献1772条经验 获得超6个赞
请仔细阅读如何编写 Go 代码。它解释了您需要知道的一切。
您不用GOPATH
作项目目录。假设您想使用标准的 Go 工具,您的包源需要位于与其导入路径对应的目录中,就像任何其他包一样。
您的项目应该位于$GOPATH/src/project-mars
,可以通过go install project-mars
. 该helper
包应位于$GOPATH/src/project-mars/helper
,并通过 导入"project-mars/helper"
。
三国纷争
TA贡献1804条经验 获得超7个赞
将您的helper-lib文件夹重命名为helper
然后把这个文件夹从project-mars移动到上层文件夹work
这应该使您的
import "helper"
main.go 工作中的语句。
- 2 回答
- 0 关注
- 162 浏览
添加回答
举报
0/150
提交
取消