欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Go語言GOPATH是什么

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

          Go語言GOPATH是什么

          本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

          一、GOPATH的概念

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

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

          工作區(qū)的概念與工作目錄的概念也是類似的。如果不使用工作目錄的概念,在多人開發(fā)時,每個人有一套自己的目錄結(jié)構(gòu),讀取配置文件的位置不統(tǒng)一,

          Go語言GOPATH是什么

          二、GOPATH的使用

          GOPATH目錄一般為:

          1、bin 存放編譯生成的二進制文件。比如 執(zhí)行命令 go get github.com/google/gops,bin目錄會生成 gops 的二進制文件。

          2、pkg 其中pkg下面以下三個文件夾。

          • XX_amd64: 其中 XX 是目標操作系統(tǒng),比如 mac 系統(tǒng)對應的是darwin_amd64, linux 系統(tǒng)對應的是 linux_amd64,存放的是.a結(jié)尾的文件。
          • mod: 當開啟go Modules 模式下,go get命令緩存下依賴包存放的位置
          • sumdb: go get命令緩存下載的checksum數(shù)據(jù)存放的位

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

          Go語言GOPATH是什么

          如下是一個完整的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 模式下,我們需要將應用代碼存放在固定的$GOPATH/src目錄下,且如果執(zhí)行go get使用第三方類庫的時候會自動下載并安裝到$GOPATH目錄下。 項目的Golang代碼,和第三方的Golang文件混在一起, 每個如果項目都需要同樣的依賴,那么我們就會在不同的GoPath的src中下載大量重復的第三方依賴包,這同樣會占用大量的磁盤空間

          GOPATH 的缺點

          • 必須指定目錄,

          • go get 命令的時候,無法指定獲取的版本

          • 引用第三方項目的時候,無法處理v1、v2、v3等不同版本的引用問題,因為在GOPATH 模式下項目路徑都是 github.com/foo/project

          • 無法同步一致第三方版本號,在運行 Go 應用程序的時候,無法保證其它人與所期望依賴的第三方庫是相同的版本。

          我們給不同的項目設置不同的GoPath,優(yōu)點非常明顯:

          便于管理項目,每個項目都是不同的GoPath,這對于我們管理多個Golang項目而言,能夠非常清晰的處理項目結(jié)構(gòu)。如果我們把所有項目都放在同一個GoPath的src包下,那么項目的結(jié)構(gòu)就會變得非?;靵y,難以管理。

          但是當我們需要依賴第三方的包的時候,不同的項目設置不同的GoPath的缺點也非常明顯:

          • 第三方依賴的包和我們自己的Golang包混在一起,會給我們的項目文件管理帶來一定的麻煩。

          • 不同的GoPath都需要下載依賴,那么磁盤中重復的依賴就會非常多,會占用我們大量的磁盤空間。

          所以,設置一個GoPath目錄,解決依賴重復的問題,設置不同的GoPath目錄,解決Golang項目結(jié)構(gòu)混亂的問題,這本身就是個有爭議性的問題。

          為了解決這所有的問題,Golang最終引入了GoModule的概念。

          Go語言GOPATH是什么

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號