所以我第一次开发了一个 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.go
main.go 的内容
package main
import (
"fmt"
"helper"
)
func main(){
fmt.Println("Hello")
}
helper.go 的内容
package helper
import (
"fmt"
)
func SayWorld(){
fmt.Println("World")
}
而 go 变量是 -
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 帮助包时,它们不会被下载两次,都在project-mars 和 project-aurora 。
在处理不同项目时如何避免这种冗余?
更新:并不是我不能编译它们。我可以使用 GOPATH 作为我的项目目录并使用 src、pkg、bin 项目布局,并重新组织文件并最终编译项目。伊伊皮。但我的问题是关于解决以这种单一的 GOPATH 方式出现的常见包问题的冗余。
梦里花落0921
三国纷争
相关分类