最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

全部開發(fā)者教程

Go 入門教程

Go 語言基礎(chǔ)教程
01 Go語言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語言的 := 10 Go 的整型(int) 11 Go 的無符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類型轉(zhuǎn)換 16 Go 語言的常量 17 Go 語言中代替枚舉的辦法 18 Go 語言中的運(yùn)算符 19 Go 語言的分支語句 20 Go 語言的循環(huán)語句 21 Go 語言的通道 22 Go 語言中的函數(shù) 23 Go 語言函數(shù)中的 defer 24 Go 語言中的閉包 25 Go 語言的指針 26 Go 語言中的數(shù)組 27 Go 語言中的切片 28 Go 語言中的 Map 29 Go 語言中的 range 30 Go 語言拓展以有類型 31 Go 語言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語言中的接口 33 Go 語言類型的內(nèi)嵌 34 Go 語言中的 nil 35 Go 語言函數(shù)式編程 36 Go 語言中的錯(cuò)誤和異常處理 37 Go 語言的并發(fā) 38 Go 語言中的包 39 Go 語言 go mod 包依賴管理工具 40 Go 語言的文件操作 41 Go 語言中的系統(tǒng)包 42 Go 語言的 strings 系統(tǒng)包的使用 43 Go 語言中的變參 44 Go 語言中的反射 45 Go 語言性能測(cè)試 46 使用 Go 語言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能
首頁 慕課教程 Go 入門教程 Go 入門教程 39 Go 語言 go mod 包依賴管理工具

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

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

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

1. 指令介紹

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

圖片描述

指令解析如下表:

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

2. 代理配置

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

阿里云: https://mirrors.aliyun.com/goproxy
 
微軟: https://goproxy.io
 
七牛云: https://goproxy.cn
 
GoCenter: https://gocenter.io

2.1 臨時(shí)配置方案

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

$env:GOPROXY="https://goproxy.cn"

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

圖片描述

2.2永久配置方案

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

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

go env -w GOPROXY=https://goproxy.cn

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

圖片描述

3. go mod 中使用 replace

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

使用代碼如下:

module firstgo

go 1.13

replace (
    //包導(dǎo)入名 => 本地包相對(duì)路徑/絕對(duì)路徑
    firstgo/packagetest1 => ./packagetest1
    firstgo/packagetest2 => ./packagetest2
)

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

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

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello Codey!",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

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

go mod init
go mod tidy

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

圖片描述

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

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

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

module firstgo

go 1.13

require github.com/gin-gonic/gin v1.6.3

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

5. 小結(jié)

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

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