[ go mod 讲解 | 青训营笔记 ]

121 阅读1分钟

前言

在介绍go mod之前顺便介绍一下GOROOT和GOPATH这两个概念:

  • GOROOT是go sdk的安装目录(类似java的jdk)
  • GOPATH是项目的工作目录,其下一般有bin, src, pkg三个目录
    • bin用于存放编译后的可执行文件
    • src用于存放源码文件
    • pkg用于存放生成的中间缓存文件

使用gopath开发有以下问题:

  1. 代码开发必须在GOPATH src目录下
  2. 依赖需要手动管理
  3. 依赖包没有版本可言

于是go mod诞生了

定义

go mod是Golang1.11版本新引入的官方包管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便 依赖包的管理。官方定义为:

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。
go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。
modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件

开启go mod

go env -w GO111MODULE=on

可以go env查看一下, 内容像这样:

$ go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=

go mod 命令

1.init

go mod init project_name

初始化项目并生成go.mod文件,其中project_name是项目名

2.download

go mod download 

下载 go.mod 文件中指明的所有依赖,使用此命令来下载指定的模块

3.tidy

go mod tidy

此命令用于整理现有的依赖,使用此命令来下载指定的模块,并删除已经不用的模块

4.get

go get package@version

go get命令用于下载并安装指定的包及其依赖项,然后将它们放在$GOPATH目录下的对应位置,以便其他项目可以引用它们。如果未指定版本,则会安装最新版本

5.install

go install package

go install命令用于编译并安装指定的包。它会先执行 go build 命令来编译包,然后将生成的可执行文件放在 $GOBIN 目录下