3 Go mod及包管理

2021-10-13 22:38:54 字數 2562 閱讀 9969

目錄

一、 包的介紹和定義

二、 包管理工具 go mod

1、 go mod init 初始化專案

2、 go mod 其他命令

三、 自定義包

1、 定義乙個包

2、 匯入乙個包

四、 使用第三方包

2、 安裝這個包

包(package) 是多個 go 原始碼的集合, 是一種高階的**復用方案, go 語言為我們提供了很多內建包, 如 fmt、 strconv、 strings、 sort、 errors、 time、 encoding/json、 os、 io 等。

golang 中的包可以分為三種: 1、 系統內建包 2、 自定義包 3、 第三方包在 golang1.11 版本之前如果我們要自定義包的話必須把專案放在 gopath 目錄。 go1.11 版本之後無需手動配置環境變數, 使用 go mod 管理專案, 也不需要非得把專案放到 gopath指定目錄下, 你可以在你磁碟的任何位置新建乙個專案 , go1.13 以後可以徹底不要 gopath了。

有三個可選值:offonauto,預設值是auto

go111module=off禁用模組支援,編譯時會從gopathvendor資料夾中查詢包。

go111module=auto,當專案在$gopath/src外且專案根目錄有go.mod檔案時,自動開啟模組支援。

go mod 出現後, gopath 和 govendor 將會且正在被逐步淘汰,但是若你的專案仍然要使用那些即將過時的包依賴管理方案,請注意將 go111module 置為 off。

使用以下命令開啟:go env -w go111module="on"

專案名:go.mod.project,我們可以使用go mod命令生成檔案管理我們專案的依賴,在我們的專案目錄下執行go mod 命令生成乙個 go.mod 檔案。

檢視go.mod內容

包(package) 是多個 go 原始碼的集合, 乙個包可以簡單理解為乙個存放多個.go 檔案的資料夾。 該資料夾下面的所有 go 檔案都要在**的第一行新增如下**, 宣告該檔案歸屬的包。

注意事項:

• 乙個資料夾下面直接包含的檔案只能歸屬乙個 package, 同樣乙個 package 的檔案不能在多個資料夾下。

• 包名可以不和資料夾的名字一樣, 包名不能包含 - 符號。

• 包名為 main 的包為應用程式的入口包, 這種包編譯後會得到乙個可執行檔案, 而編譯不包含 main 包的源**則不會得到可執行檔案。

如果想在乙個包中引用另外乙個包裡的識別符號(如變數、 常量、 型別、 函式等) 時, 該識別符號必須是對外可見的( public) 。 在 go 語言中只需要將識別符號的首字母大寫就可以讓識別符號對外可見了。

定義兩個測試的包:

然後在main.go中進行引用:

單行匯入

import "包 1"

import "包 2"

多行匯入

import (

"包 1"

"包 2"

)

匿名匯入包

如果只希望匯入包, 而不使用包內部的資料時, 可以使用匿名匯入包。 具體的格式如下:

import _ "包的路徑"
自定義包名

在匯入包名的時候, 我們還可以為匯入的包設定別名。 通常用於匯入的包名太長或者匯入的包名衝突的情況。 具體語法格式如下:

import 別名 "包的路徑"
比如前面給大家演示的解決 float 精度損失的包 decimal

第一種方法: go get 包名稱 (全域性)

go get github.com/shopspring/decimal
第二種方法: go mod download (全域性)

go mod download
go mod vendor
將依賴複製到當前專案的 vendor 下

注意: 使用 go mod vendor 的時候首先需要在你的專案裡面引入第三方包

Go包管理go mod使用

為了解決go包管理的問題,go從1.11開始加入了go modules這一新特性。讓包的依賴和版本管理更加容易。乙個module可以理解為乙個單獨的包或者模組,module的根目錄下會包含乙個go.mod檔案。go.mod檔案中定義了該module被其它包import的path,同時也包含了該mod...

Go mod 之 Golang依賴包管理

如果你還在使用 gopath 模式來開發golang程式,那麼你可以參考本文來告別 gopath,並帶給你乙個方便的包管理工具。使用go mod 管理專案,就不需要非得把專案放到gopath指定目錄 直接使用命令 go mod init 目錄名稱 看到提示 go creating new go.mo...

Go 語言程式設計 go mod 依賴包管理

golang 將 modules 模組 定義為 源 交付和版本控制的單元 有了 go mod 之後,每個專案 源 目錄 就是乙個 module,只要其中包含了 go.mod 檔案。go mod 指令和 go.mod 檔案用於記錄和解析模組之間的依賴性。go.mod 檔案一旦建立後,它的內容將會被 g...