我是Golang的新手。據我所知,當你想創建一個新的Go項目時,我們只需要創建一個目錄。然後我們將環境變量GOPATH
指向此目錄。在這個目錄中,我們創建了三個子目錄pkg
,src
和bin
。然後當我們執行go get ...
時,第三方包將安裝在pkg
子目錄中。後來如果我想創建另一個Go項目,則創建一個名爲project2的新目錄並將GOPATH
指向project2。此時go get ...
將下載項目2的pkg
子目錄中的第三方包。我的問題是,Go是否有中央存儲庫?如果沒有,如果在兩個不同的項目中使用相同的軟件包,則會下載兩次。真的嗎?golang是否有下載的第三方軟件包的中央存儲庫?
3
A
回答
3
沒有中央軟件包的存儲庫。 Go總是在GOPATH或GOROOT中尋找軟件包。只需使用git或mercurial下載軟件包即可。我建議你閱讀 https://golang.org/doc/code.html 和https://peter.bourgon.org/go-best-practices-2016/#repository-structure
GOPATH簡單地告訴編譯器去哪裏尋找src
,pkg
目錄。
1
以後如果我想創建另一個圍棋項目,我創建了一個名爲項目2和點GOPATH新的目錄,以PROJECT2 ... 我的問題是,圍棋是否有一箇中央存儲庫?如果沒有,如果在兩個不同的項目中使用相同的軟件包,則會下載兩次。真的嗎?
不,沒有Go代碼的中央存儲庫。但是,軟件包總是會被下載兩次也是不正確的。
這裏的誤解是,GOPATH
指向一個單獨的項目:它沒有。相反,GOPATH
指向一個環境您的所有軟件包都在哪裏生存;它是go get
將下載包的地方,並且go build
將在構建時查找包。
而是改變GOPATH
每一個項目,你應該設置GOPATH
一次,並把所有的項目在$GOPATH/src/
(您的項目不包含src/
目錄,他們去在的src/
目錄)。
因此,例如,整個樹看起來像:
$GOPATH/src/bitbucket.org/ (or GitHub, or your website, or whatever)
├── YourProject
└── AnotherProject
相關問題
- 1. 是否有第三方軟件修改SSIS包?
- 2. Maven從中央存儲庫下載
- 3. 如何在Java軟件中包含第三方庫/軟件?
- 4. 是否有M4文件的中央存儲庫
- 5. 下載Github中的存儲庫以及作曲軟件包
- 6. 根據第三方庫安裝帶有ext_module的python軟件包
- 7. 在Golang測試/嘲笑第三方軟件包
- 8. 我可以將第三方軟件包導入golang遊戲區
- 9. 私有連接庫無法從中央存儲庫下載* .jar
- 10. 如何打包第三方軟件以及我的軟件包?
- 11. Wix Bootstrapper - 從安全的http存儲庫下載軟件包
- 12. 是否有Javascript信息的中央存儲庫?
- 13. 是否有時區信息的中央存儲庫
- 14. Maven存儲庫代理第三方存儲庫,這是否產生流量?
- 15. 監視目錄中沒有第三方軟件包的更改
- 16. 如果第三方庫不可公開下載,那麼如何將第三方庫放入本地存儲庫?
- 17. Laravel:使用第三方軟件包
- 18. 防止第三方軟件包導入
- 19. 無法導入第三方軟件包
- 20. 是否有任何網站在CRAN軟件包存儲庫中監控新的R軟件包?
- 21. 帶有Windows中央存儲庫的DVCS
- 22. 是否有可能從第三方軟件訪問Facebook帳戶?
- 23. Nuget是否存儲軟件包的所有版本?
- 24. 是否有可能重寫第三方庫中的方法?
- 25. 保存Mercurial項目下的第三方庫:是否有子回購?
- 26. 是否有可能以zip格式下載Win32的軟件包?
- 27. 如何將工件從第三方存儲庫下載到本地存儲庫並稍後使用IT?
- 28. 從第三方讀取Linux存儲庫
- 29. 在本地開發第三方軟件包(或庫)
- 30. 如何下載Rev. 9第三方附加軟件?
通過「中央資源庫」,你的意思是一個本地緩存?這是您的GOPATH,您可以爲多個項目使用相同的GOPATH。 – JimB
如果我在project1上工作,我將GOPATH指向project1。後來我在project2上工作,我應該把GOPATH指向project2嗎?如果是這樣,GOPATH不是本地緩存...... – user130268
GOPATH不是您的項目的根源。您的項目應位於'$ GOPATH/src'下的導入路徑中。請參閱[如何編寫Go代碼](https://golang.org/doc/code.html) – JimB