所以我第一次開發(fā)了一個(gè) go 應(yīng)用程序。我開始知道有兩個(gè)變量 GOROOT 和 GOPATH 用于維護(hù) go 包。到目前為止,我的理解是 GOROOT 用于 go 二進(jìn)制文件,而 GOPATH 主要用于存儲(chǔ)項(xiàng)目所需的庫(kù)和幫助程序包。這是我目前的項(xiàng)目結(jié)構(gòu) -/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 的內(nèi)容package mainimport ( "fmt" "helper")func main(){ fmt.Println("Hello")}helper.go 的內(nèi)容package helperimport ( "fmt")func SayWorld(){ fmt.Println("World")}而 go 變量是 -GOROOT = /Users/john/apps/goGOPATH = /Users/john/apps/go-packages問(wèn)題: 現(xiàn)在,當(dāng)我執(zhí)行以下命令時(shí),出現(xiàn)此錯(cuò)誤 -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 應(yīng)該是我正在處理的項(xiàng)目目錄。但是我擔(dān)心以模塊化方式保持我的項(xiàng)目和庫(kù)包,以便以后我有一個(gè)完全不同的項(xiàng)目(即項(xiàng)目極光)可能使用相同的 github 幫助包時(shí),它們不會(huì)被下載兩次,都在project-mars 和 project-aurora 。在處理不同項(xiàng)目時(shí)如何避免這種冗余?更新:并不是我不能編譯它們。我可以使用 GOPATH 作為我的項(xiàng)目目錄并使用 src、pkg、bin 項(xiàng)目布局,并重新組織文件并最終編譯項(xiàng)目。伊伊皮。但我的問(wèn)題是關(guān)于解決以這種單一的 GOPATH 方式出現(xiàn)的常見(jiàn)包問(wèn)題的冗余。
2 回答

夢(mèng)里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
請(qǐng)仔細(xì)閱讀如何編寫 Go 代碼。它解釋了您需要知道的一切。
您不用GOPATH
作項(xiàng)目目錄。假設(shè)您想使用標(biāo)準(zhǔn)的 Go 工具,您的包源需要位于與其導(dǎo)入路徑對(duì)應(yīng)的目錄中,就像任何其他包一樣。
您的項(xiàng)目應(yīng)該位于$GOPATH/src/project-mars
,可以通過(guò)go install project-mars
. 該helper
包應(yīng)位于$GOPATH/src/project-mars/helper
,并通過(guò) 導(dǎo)入"project-mars/helper"
。

三國(guó)紛爭(zhēng)
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
將您的helper-lib文件夾重命名為helper
然后把這個(gè)文件夾從project-mars移動(dòng)到上層文件夾work
這應(yīng)該使您的
import "helper"
main.go 工作中的語(yǔ)句。
- 2 回答
- 0 關(guān)注
- 214 瀏覽
添加回答
舉報(bào)
0/150
提交
取消