所以我第一次开发了一个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 main
import (
"fmt"
"helper"
)
func main(){
fmt.Println("Hello")
}helper.go含量
package helper
import (
"fmt"
)
func SayWorld(){
fmt.Println("World")
}围棋的变量是-
GOROOT = /Users/john/apps/go
GOPATH = /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助手包,它们不会被下载两次,无论是在项目-火星和项目-极光。
在处理不同的项目时,如何避免这种冗余?
更新:不是说我不能编译它们。我可以使用GOPATH作为我的项目目录,使用src,pkg,bin项目布局,还可以重新组织文件并最终编译项目。是的。但我的问题是解决这一单一的GOPATH方式中出现的公共一揽子问题的冗余问题。
发布于 2016-03-15 12:47:41
请仔细阅读如何编写Go代码。它解释了你需要知道的一切。
您不使用GOPATH作为您的项目目录。假设您想使用标准Go工具,您的包源需要在与其导入路径相对应的目录中,就像任何其他包一样。
您的项目应该位于$GOPATH/src/project-mars,它可以通过go install project-mars构建。helper包应该位于$GOPATH/src/project-mars/helper,并通过"project-mars/helper"导入。
发布于 2016-03-14 23:40:00
将helper-lib文件夹重命名为helper
然后将该文件夹从project-mars移动到上文件夹工作。
这应该会让你
import "helper" 语句在main.go work中。
https://stackoverflow.com/questions/35999277
复制相似问题