第二坑:Go Module 新的官方包管理形式
這個坑導致以前的很多Go教程失效,以前版本go教程都是直接使用go get 命令把程式碼庫下載到gopath\src\github.com\......下面的路徑中。
我們當前使用的新版本是Go1.16
在 v1.11 中加入了 Go Module 作為官方包管理形式。module是一個相關Go包的集合,它是原始碼更替和版本控制的單元。模組由原始檔形成的go.mod檔案的根目錄定義,包含go.mod檔案的目錄也被稱為模組根。moudles取代舊的的基於GOPATH方法來指定在工程中使用哪些原始檔或匯入包。模組路徑是匯入包的路徑字首,go.mod檔案定義模組路徑,並且列出了在專案構建過程中使用的特定版本。
第1步:開啟mod開關:使用命令列:go env -w GO111MODULE=on
表示設定Go1.11版本的MODULE模式開關狀態為ON
第2步:建立一個work工程
手工建立d:\gopath\src\test目錄,這個test目錄就是我們預設的一個具體工程目錄,也可以設定其他名稱。這個test在Go中稱為一個package.
知識點:package包:1.注意在GO中一個具體的目錄稱為一個package包,強烈建議目錄名和package包一致,否則容易出問題
2.每個子目錄中只能存在一個package,否則編譯時會報錯
3.go的package是以絕對路徑GOPATH來定址的,不要用相對路徑來import
初始工程例項:在d:\gopath\src\test路徑下使用命令:go mod init test
表示在test目錄中建立mod.
使用完成後檢視d:\gopath\src\test路徑下會新生成兩個檔案:
go.mod檔案:內容類似這樣的(共兩行)
module test
go 1.16
再使用命令:go get github.com/360EntSecGroup-Skylar/excelize/v2
現在go.mod檔案內容變成了三行:
module test
go 1.16
require github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.2 // indirect
後來我將依據這個test工程包來做些入門小示例