91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言GOPATH的概念是什么

發布時間:2023-01-14 10:04:00 來源:億速云 閱讀:81 作者:iii 欄目:編程語言

這篇“Go語言GOPATH的概念是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Go語言GOPATH的概念是什么”文章吧。

GOPATH是Go語言中使用的一個環境變量,它使用絕對路徑提供項目的工作目錄(也稱為工作區), 是存放Golang項目代碼的文件路徑。GOPATH目錄一般為:1、bin,存放編譯生成的二進制文件;2、pkg,其中包括XX_amd64、mod和sumdb三個文件夾;3、src,存放golang項目代碼的位置。

一、GOPATH的概念

GOPATH 是 Go 語言中使用的一個環境變量,它使用絕對路徑提供項目的工作目錄(也稱為工作區), 是存放 Golang 項目代碼的文件路徑, GOPATH 適合處理大量 Go語言源碼、多個包組合而成的復雜工程。

工作目錄是一個工程開發的相對參考目錄,好比當你要在公司編寫一套服務器代碼,你的工位所包含的桌面、計算機及椅子就是你的工作區。

工作區的概念與工作目錄的概念也是類似的。如果不使用工作目錄的概念,在多人開發時,每個人有一套自己的目錄結構,讀取配置文件的位置不統一,

Go語言GOPATH的概念是什么

二、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結尾的文件。

  • mod: 當開啟go Modules 模式下,go get命令緩存下依賴包存放的位置

  • sumdb: go get命令緩存下載的checksum數據存放的位

3、src 存放golang項目代碼的位置

Go語言GOPATH的概念是什么

如下是一個完整的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的概念是什么

以上就是關于“Go語言GOPATH的概念是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泊头市| 三门峡市| 深水埗区| 夏津县| 洛宁县| 乡城县| 沙湾县| 陕西省| 丹凤县| 巩义市| 漠河县| 朔州市| 天等县| 遵义市| 邳州市| 神木县| 昌乐县| 全椒县| 博野县| 中方县| 合川市| 张家川| 长顺县| 如皋市| 新昌县| 邻水| 阿合奇县| 新巴尔虎右旗| 康定县| 清水县| 屏东市| 宜兰县| 河西区| 甘德县| 易门县| 当雄县| 新丰县| 馆陶县| 屏东县| 枣阳市| 莱州市|