這篇“Go語言GOPATH的概念是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Go語言GOPATH的概念是什么”文章吧。
成都創(chuàng)新互聯(lián)公司專注于寶雞企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都商城網(wǎng)站開發(fā)。寶雞網(wǎng)站建設(shè)公司,為寶雞等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
GOPATH是Go語言中使用的一個環(huán)境變量,它使用絕對路徑提供項目的工作目錄(也稱為工作區(qū)), 是存放Golang項目代碼的文件路徑。GOPATH目錄一般為:1、bin,存放編譯生成的二進制文件;2、pkg,其中包括XX_amd64、mod和sumdb三個文件夾;3、src,存放golang項目代碼的位置。
GOPATH 是 Go 語言中使用的一個環(huán)境變量,它使用絕對路徑提供項目的工作目錄(也稱為工作區(qū)),是存放 Golang 項目代碼的文件路徑, GOPATH 適合處理大量 Go語言源碼、多個包組合而成的復(fù)雜工程。
工作目錄是一個工程開發(fā)的相對參考目錄,好比當(dāng)你要在公司編寫一套服務(wù)器代碼,你的工位所包含的桌面、計算機及椅子就是你的工作區(qū)。
工作區(qū)的概念與工作目錄的概念也是類似的。如果不使用工作目錄的概念,在多人開發(fā)時,每個人有一套自己的目錄結(jié)構(gòu),讀取配置文件的位置不統(tǒng)一,
GOPATH
目錄一般為:
1、bin 存放編譯生成的二進制文件。比如 執(zhí)行命令 go get github.com/google/gops,bin目錄會生成 gops 的二進制文件。
2、pkg 其中pkg下面以下三個文件夾。
XX_amd64: 其中 XX 是目標(biāo)操作系統(tǒng),比如 mac 系統(tǒng)對應(yīng)的是darwin_amd64, linux 系統(tǒng)對應(yīng)的是 linux_amd64,存放的是.a結(jié)尾的文件。
mod: 當(dāng)開啟go Modules 模式下,go get命令緩存下依賴包存放的位置
sumdb: go get命令緩存下載的checksum數(shù)據(jù)存放的位
3、src 存放golang項目代碼的位置
如下是一個完整的Go項目的開發(fā)目錄:
my-go // my-go為GOPATH目錄
-- bin
-- myApp1 // 編譯生成
-- myApp2 // 編譯生成
-- myApp3 // 編譯生成
-- pkg 依賴包編譯后的*.a文件//
-- src
-- MyApp1 // 項目1
-- models
-- controllers
-- others
-- main.go
-- MyApp2 // 項目2
-- models
-- controllers
-- others
-- main.go
在使用 GOPATH 模式下,我們需要將應(yīng)用代碼存放在固定的$GOPATH/src
目錄下,且如果執(zhí)行go get
使用第三方類庫的時候會自動下載并安裝到$GOPATH
目錄下。 項目的Golang代碼,和第三方的Golang文件混在一起,每個如果項目都需要同樣的依賴,那么我們就會在不同的GoPath的src中下載大量重復(fù)的第三方依賴包,這同樣會占用大量的磁盤空間
GOPATH 的缺點
必須指定目錄,
go get 命令的時候,無法指定獲取的版本
引用第三方項目的時候,無法處理v1、v2、v3等不同版本的引用問題,因為在GOPATH 模式下項目路徑都是 github.com/foo/project
無法同步一致第三方版本號,在運行 Go 應(yīng)用程序的時候,無法保證其它人與所期望依賴的第三方庫是相同的版本。
我們給不同的項目設(shè)置不同的GoPath,優(yōu)點非常明顯:
便于管理項目,每個項目都是不同的GoPath,這對于我們管理多個Golang項目而言,能夠非常清晰的處理項目結(jié)構(gòu)。如果我們把所有項目都放在同一個GoPath的src包下,那么項目的結(jié)構(gòu)就會變得非?;靵y,難以管理。
但是當(dāng)我們需要依賴第三方的包的時候,不同的項目設(shè)置不同的GoPath的缺點也非常明顯:
第三方依賴的包和我們自己的Golang包混在一起,會給我們的項目文件管理帶來一定的麻煩。
不同的GoPath都需要下載依賴,那么磁盤中重復(fù)的依賴就會非常多,會占用我們大量的磁盤空間。
所以,設(shè)置一個GoPath目錄,解決依賴重復(fù)的問題,設(shè)置不同的GoPath目錄,解決Golang項目結(jié)構(gòu)混亂的問題,這本身就是個有爭議性的問題。為了解決這所有的問題,Golang最終引入了GoModule的概念。
以上就是關(guān)于“Go語言GOPATH的概念是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站名稱:Go語言GOPATH的概念是什么
文章網(wǎng)址:http://jinyejixie.com/article16/gdjegg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、外貿(mào)建站、面包屑導(dǎo)航、電子商務(wù)、網(wǎng)站收錄、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)