1. 程式人生 > 其它 >go專案管理 GOPATH與go mod

go專案管理 GOPATH與go mod

$GOPATH

  • 允許設定多個路徑
  • GOPATYH目錄結構
    goWorkSpapce //GOPATH目錄
    -- bin //編譯可執行檔案存放的路徑,可自動生成
    -- pkg ///.a中間檔案存放路徑,可自動生成
    -- src //原始碼路徑

GO get

  • 1.從遠端下載需要的包 2.執行go install

GO install

  • 編譯生成可執行檔案,放在GOBIN路徑下,GOBIN預設是在GOPATH/bin資料夾下

  • 如果不用額外方式改變環境變數(公司目前用的是sh指令碼編譯),是編譯不過的。報錯:can’t load package: package .: no buildable Go source files in ***

編譯問題

  • 問題:多個project會導致多個GOPATH目錄,而go優先使用第一個GOPATH目錄,會導致編譯衝突
  • 解決方法
    • 使用如下目錄:多個project或工具元件都放在GOPATH的src下

    • 此時GOBIN可以為空

    • GOPATH目錄和GOPATH下的src不應該新增到原始碼管理中,而是各個project目錄myApp1、myApp2、myApp3各自時獨立的進行原始碼管理

    • goWorkSpace     // goWorkSpace為GOPATH目錄
        -- bin
           -- myApp1  // 編譯生成
           -- myApp2  // 編譯生成
           -- myApp3  // 編譯生成
        -- pkg
        -- src
           -- common 1
           -- common 2
           -- common utils ...
           -- myApp1     // project1
              -- models
              -- controllers
              -- others
              -- main.go 
           -- myApp2     // project2
              -- models
              -- controllers
              -- others
              -- main.go 
           -- myApp3     // project3
              -- models
              -- controllers
              -- others
              -- main.go 
      

go mod包管理

  • 優勢:不受GOPATH的限制,可以在任意的資料夾下建立工程
  • 例子:在GoLand中使用go mod模式建立工程,會自動生成go.mod檔案,然後就可以正產編譯包了

命令列使用方式

  • 設定變數GO111MODULE為on

  • go mod init + projectname:初始化mod

  • go.mod稱為模組根,定義了它所在目錄為一個模組

  • 使用go build main.go編譯