亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

Go 語(yǔ)言 go mod 包依賴(lài)管理工具

前文了解了 Go 語(yǔ)言中的包來(lái)復(fù)用代碼,一直以來(lái) Go 語(yǔ)言的包管理都是飽受開(kāi)發(fā)者詬病的一個(gè)軟肋,直到官方推出了 go mod。這個(gè)強(qiáng)大的包管理工具使得我們徹底告別了 Go 語(yǔ)言繁瑣的包管理。本文就來(lái)介紹以下如何使用 go mod 來(lái)進(jìn)行包管理。

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

 

1. 指令介紹

在控制臺(tái)中輸入go mod指令,會(huì)出來(lái)這個(gè)工具的幫助命令。

圖片描述

指令解析如下表:

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

 

2. 代理配置

go mod 雖然可以直接幫我們下載好我們需要的包,但是因?yàn)?Go 語(yǔ)言很多包都是在國(guó)外的服務(wù)器上,國(guó)內(nèi)下載具有一定的困難。但是不用擔(dān)心,go mod 提供了代理服務(wù),同時(shí)很多國(guó)內(nèi)的云服務(wù)器產(chǎn)商都提供了自己的代理服務(wù):

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

 

2.1 臨時(shí)配置方案

go mod 代理的臨時(shí)配置方案就是在控制臺(tái)中使用控制臺(tái)對(duì)應(yīng)的環(huán)境變量的修改指令去將?GOPROXY 的值設(shè)置為代理值,以 PowerShell 為例:

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

然后在終端中輸入go env GOPROXY來(lái)查看修改結(jié)果,若輸出https://goproxy.cn則為設(shè)置成功。這個(gè)設(shè)置只在當(dāng)前控制臺(tái)有效,重啟控制臺(tái)之后就會(huì)失效。

圖片描述

 

2.2永久配置方案

Go語(yǔ)言自帶的環(huán)境變量修改指令可以永久修改GOPROXY這個(gè)環(huán)境變量。

Tips:這個(gè)指令只能修改go env中的環(huán)境變量

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

然后關(guān)閉終端再打開(kāi),輸入go env GOPROXY結(jié)果還是會(huì)輸出https://goproxy.cn。

圖片描述

 

3. go mod 中使用 replace

replace?是用于使用本地包來(lái)替換導(dǎo)入包的一個(gè)操作,畢竟并不是所有導(dǎo)入包都能夠下載的到,也有一些是你自己開(kāi)發(fā),并未上傳到網(wǎng)絡(luò)中的代碼,這時(shí)候如果要在 go mod 中導(dǎo)入就需要?replace?了。

使用代碼如下:

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

 

4. 在項(xiàng)目中使用

在了解了如何使用 go mod 之后,接下介紹一個(gè)在項(xiàng)目中使用的例子。在任意文件夾中創(chuàng)建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? }

隨后打開(kāi)控制臺(tái),輸入:

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

你就會(huì)看到 go mod 會(huì)下載很多相關(guān)依賴(lài)包:

圖片描述

Tips:你們下載的依賴(lài)包可能會(huì)比我多的多,因?yàn)槲抑皇菫榱苏故倦S機(jī)刪了幾個(gè)依賴(lài)包重新下載。

同時(shí)文件夾下多了個(gè) go.mod 和 go.sum ,其中 go.sum 不用在意,其中的內(nèi)容為導(dǎo)入包的路徑、版本和它的hash ,是自動(dòng)生成自動(dòng)更新的。

go.mod 的內(nèi)容為:

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

自動(dòng)記錄了你引用的包路徑和版本。如果要修改使用版本,直接修改版本號(hào)即可。

 

5. 小結(jié)

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

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

文章來(lái)源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開(kāi)發(fā)專(zhuān)業(yè)人才培訓(xùn)機(jī)構(gòu)!