久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Go 語言 go mod 包依賴管理工具

前文了解了 Go 語言中的包來復用代碼,一直以來 Go 語言的包管理都是飽受開發者詬病的一個軟肋,直到官方推出了 go mod。這個強大的包管理工具使得我們徹底告別了 Go 語言繁瑣的包管理。本文就來介紹以下如何使用 go mod 來進行包管理

Tips:只有在Go11.1之后的版本有這個工具,在Go語言13.0以后該工具趨于完善。本文的Go版本為13.5,建議使用最新版本的Go語言環境。

 

1. 指令介紹

在控制臺中輸入go mod指令,會出來這個工具的幫助命令。

圖片描述

指令解析如下表:

指令 功能
go mod download 下載依賴包到本地(默認下載目錄為 $GOPATH/pkg/mod)
go mod edit 編輯 go.mod 文件(不常用)
go mod graph 輸出go mod的依賴圖
go mod init 初始化一個mod項目,即在包中示創建一個go.mod文件
go mod tidy 自動補全新增(刪除減少)的依賴包
go mod verify 校驗依賴包
go mod why 解釋為什么要依賴,即顯示這個包在哪里被導入了(不常用)

 

2. 代理配置

go mod 雖然可以直接幫我們下載好我們需要的包,但是因為 Go 語言很多包都是在國外的服務器上,國內下載具有一定的困難。但是不用擔心,go mod 提供了代理服務,同時很多國內的云服務器產商都提供了自己的代理服務:

代碼塊
  • 1? 阿里云: https://mirrors.aliyun.com/goproxy
  • 2
  • 3? 微軟: https://goproxy.io
  • 4
  • 5? 七牛云: https://goproxy.cn
  • 6
  • 7 GoCenter: https://gocenter.io

 

2.1 臨時配置方案

go mod 代理的臨時配置方案就是在控制臺中使用控制臺對應的環境變量的修改指令去將?GOPROXY 的值設置為代理值,以 PowerShell 為例:

代碼塊
  • 1? $env:GOPROXY="https://goproxy.cn"

然后在終端中輸入go env GOPROXY來查看修改結果,若輸出https://goproxy.cn則為設置成功。這個設置只在當前控制臺有效,重啟控制臺之后就會失效

圖片描述

 

2.2永久配置方案

Go語言自帶的環境變量修改指令可以永久修改GOPROXY這個環境變量

Tips:這個指令只能修改go env中的環境變量

代碼塊
  • 1 go env -w GOPROXY=https://goproxy.cn

然后關閉終端再打開,輸入go env GOPROXY結果還是會輸出https://goproxy.cn

圖片描述

 

3. go mod 中使用 replace

replace?是用于使用本地包來替換導入包的一個操作,畢竟并不是所有導入包都能夠下載的到,也有一些是你自己開發,并未上傳到網絡中的代碼,這時候如果要在 go mod 中導入就需要?replace?了。

使用代碼如下:

代碼塊
  • 1? module firstgo
  • 2
  • 3? go 1.13
  • 4
  • 5? replace (
  • 6? ? ? ? ? //包導入名 => 本地包相對路徑/絕對路徑
  • 7? ? ? ? ? firstgo/packagetest1 => ./packagetest1
  • 8? ? ? ? ? firstgo/packagetest2 => ./packagetest2
  • 9? )

 

4. 在項目中使用

在了解了如何使用 go mod 之后,接下介紹一個在項目中使用的例子。在任意文件夾中創建Go文件,然后錄入以下代碼:

代碼塊
  • 1? package main
  • 2
  • 3? import "github.com/gin-gonic/gin"
  • 4
  • 5? func main() {
  • 6? ? ? ? ? r := gin.Default()
  • 7? ? ? ? ? r.GET("/ping", func(c *gin.Context) {
  • 8? ? ? ? ? ? ? ? ? c.JSON(200, gin.H{
  • 9? ? ? ? ? ? ? ? ? ? ? ? ? "message": "Hello Codey!",
  • 10? ? ? ? ? ? ? ? })
  • 11? ? ? ? })
  • 12? ? ? ? r.Run() // listen and serve on 0.0.0.0:8080
  • 13? }

隨后打開控制臺,輸入:

代碼塊
  • 1? go mod init
  • 2? go mod tidy

你就會看到 go mod 會下載很多相關依賴包:

圖片描述

Tips:你們下載的依賴包可能會比我多的多,因為我只是為了展示隨機刪了幾個依賴包重新下載。

同時文件夾下多了個 go.mod 和 go.sum ,其中 go.sum 不用在意,其中的內容為導入包的路徑、版本和它的hash ,是自動生成自動更新的。

go.mod 的內容為:

代碼塊
  • 1? module firstgo
  • 2
  • 3? go 1.13
  • 4
  • 5? require github.com/gin-gonic/gin v1.6.3

自動記錄了你引用的包路徑和版本。如果要修改使用版本,直接修改版本號即可

 

5. 小結

本文主要介紹了Go語言的包管理工具 go mod ,以下是其注意事項:

  • 可以在非?$GOPATH/src?的目錄中創建 go mod 項目;
  • 在下載不到包的情況可以選擇使用代理;
  • 在使用本地包時可以使用 replace。

文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 眉山市| 云龙县| 梁山县| 邓州市| 武穴市| 苗栗县| 微山县| 雅江县| 察隅县| 宁陕县| 马关县| 富蕴县| 象山县| 遵义市| 丹江口市| 丁青县| 岑溪市| 卫辉市| 富裕县| 文安县| 镇原县| 德阳市| 沁源县| 胶州市| 古浪县| 巴林左旗| 阿拉尔市| 曲松县| 黄骅市| 泰州市| 祁门县| 江山市| 九台市| 青浦区| 张家口市| 当雄县| 嘉荫县| 赤壁市| 邢台市| 青岛市| 宜兰市|