Go語言GOPATH是什麼
GOPATH是Go語言中使用的一個環境變量,它使用絕對路徑提供專案的工作目錄(也稱為工作區), 是存放Golang專案程式碼的檔案路徑。 GOPATH目錄一般為:1、bin,存放編譯產生的二進位檔案;2、pkg,其中包括XX_amd64、mod和sumdb三個資料夾;3、src,存放golang專案程式碼的位置。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
一、GOPATH的概念
GOPATH 是Go 語言中使用的一個環境變量,它使用絕對路徑提供項目的工作目錄( 又稱工作區), 是存放Golang 專案程式碼的檔案路徑, GOPATH 適合處理大量Go語言原始碼、多個套件組合而成的複雜工程。
工作目錄是一個經過工程開發的相對參考目錄,好比當你要在公司寫一套伺服器程式碼,你的工位所包含的桌面、電腦及椅子就是你的工作區。
工作區的概念與工作目錄的概念也是類似的。如果不使用工作目錄的概念,當多人開發時,每個人都有一套自己的目錄結構,讀取設定檔的位置不統一,
##二、GOPATH的使用
GOPATH目錄一般為:
1、bin 存放編譯產生的二進位檔案。例如 執行指令 go get github.com/google/gops,bin目錄會產生 gops 的二進位。 2、pkg 其中pkg下面以下三個資料夾。XX_amd64: 其中 XX 是目標作業系統,例如 mac 系統對應的是darwin_amd64, linux 系統對應的是 linux_amd64,存放的是.a結尾的檔案。
3、src 存放- mod: 當開啟go Modules 模式下,go get指令快取下依賴套件存放的位置
- sumdb: go get指令快取下載的checksum資料存放的位元
golang專案程式碼的位置
# 如下是完整的Go專案的開發目錄:
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 模式下,我們需要將應用程式碼存放在固定的$GOPATH/ src目錄下
,且如果執行go get使用第三方類別庫的時候會自動下載並安裝到
$GOPATH目錄下。
專案的Golang程式碼,和第三方的Golang檔案混在一起, 每個如果專案都需要同樣的依賴,那麼我們就會在不同的GoPath的src中下載大量重複的第三方依賴包,這同樣會佔用大量的磁碟空間
GOPATH 的缺點
- #必須指定目錄,
- go get 指令的時候,無法指定取得的版本
- 引用第三方專案的時候,無法處理v1、v2、v3等不同版本的參考問題,因為在GOPATH 模式下專案路徑都是github.com/foo/project
- #無法同步一致第三方版本號,在執行Go 應用程式的時候,無法保證其它人與所期望依賴的第三方函式庫是相同的版本。
我們為不同的項目設定不同的GoPath,優點非常明顯:
方便管理項目,每個項目都是不同的GoPath,這對於我們管理多個Golang專案而言,能夠非常清晰的處理專案結構。如果我們把所有專案都放在同一個GoPath的src包下,那麼專案的結構就會變得非常混亂,難以管理。但是當我們需要依賴第三方的套件的時候,不同的項目設定不同的GoPath的缺點也非常明顯:
- 第三方依賴的套件和我們自己的Golang套件混在一起,會為我們的專案文件管理帶來一定的麻煩。
- 不同的GoPath都需要下載依賴,那麼磁碟中重複的依賴就會非常多,會佔用我們大量的磁碟空間。
所以,設定一個GoPath目錄,解決依賴重複的問題,設定不同的GoPath目錄,解決Golang專案結構混亂的問題,這本身就是個有爭議性的問題。 #
為了解決這所有的問題,Golang最終引入了GoModule的概念。
以上是Go語言GOPATH是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...
