go專案管理 GOPATH與go mod
阿新 • • 發佈:2021-10-27
$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編譯