go module 基本使用及Goland IDE的设置

go module简介

github地址 https://github.com/golang/go/wiki/Modules

go版本在1.13及以后使用了官方自带的go依赖管理库go module进行管理。
go module将某个项目(文件夹)下的需要的依赖包及版本等写入到一个 go.mod 文件,使用go module之后代码就可以不放置在src下了

开启go module和设置代理请参考https://blog.csdn.net/fbbqt/article/details/103872568中的代理设置

go module状态

go在1.13及之后的版本默认是auto,默认模式,当前目录在GOPATH/src目录之外而且包含go.mod文件才会启用

设置go module为 on(全部开启)/off(全部不开启)

Windows系统: set GO111MODULE=on
Linux/Mac系统:export GO111MODULE=on

然后输入go env来检查

C:\Users\Administrator>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\goproject
set GOPRIVATE=
set GOPROXY=https://goproxy.cn/
set GOROOT=D:\gzrjaz\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\gzrjaz\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build199922342=/tmp/go-build -gno-record-gcc-switches

查看 GO111MODULE 选项,为 on 代表修改成功

初始化 go.mod

项目刚开始的时候,项目中还没有go.mod文件。
进入你的项目文件夹

cd xxx/xxx/demo/

然后执行以下命令:

go mod init demo(demo为项目名)

然后在项目根目录就会出现一个 go.mod 文件

注意,此时只进行了初始化, go.mod 文件只标识了项目名和go的版本

添加缺失的模块以及移除不需要的模块

go mod tidy -v

该命令会根据你的项目检测该文件夹目录下需要引入的依赖,并把依赖写入 go.mod 文件,写入后就会发现 go.mod 文件有所变动

获取依赖库

我们需要把依赖下载至本地,但不是使用 go get

go mod download

注:如果GOPROXY没有设置好或设置的镜像不好会导致速度太慢,甚至下载不动

Vendor文件夹可忽略:

在项目文件夹中生成vendor(放项目依赖的所有包)文件夹后,再把项目文件夹放到没有依赖包的新环境中时,也可以直接运行

执行完成后会将依赖全部下载到 GOPATH 下,会在根目录下生成 go.sum 文件, 该文件是依赖的详细依赖,
但我们的项目文件夹并没有放到 GOPATH 下,那下载至到 GOPATH 下的依赖是没有用的,也就找不到这些包,就没法用

生成vendor文件夹,放置go.mod文件描述的依赖包

go mod vendor -v

执行此命令,会将刚才下载到 GOPATH 下的依赖转移到该项目根目录下的 vendor(自动新建) 文件夹下

此时我们就可以使用这些依赖了

Goland 设置开启 Go Module

Goland IDE默认是关闭该功能的,我们需要手动打开。都打上勾,因为我是在系统变量中设置了Proxy,所以这里这里就没有设置。
go module 基本使用及Goland IDE的设置_第1张图片

更新依赖

是指项目引入了新的包依赖,更新依赖从检测依赖执行即可,不需要初始化,即

go mod tidy -v
go mod verify
go mod download
go mod vendor -v(如果未生成vendor,则不需要执行此命令)

新增依赖

直接在项目中 import 这个包,之后更新依赖即可

go nodule常用命令

go mod edit # 手动修改依赖文件
go mod graph # 打印依赖图

官方依赖库管理命令

 govendor依赖管理
 govendor命令
 // 创建vendor文件夹和vendor.json文件
 govendor init
// 从$GOPATH中添加依赖包,会加到vendor.json
 govendor add
 // 从vendo文件夹删除依赖
 govendor remove
 // 从$GOPATH升级依赖包
 govendor update
 // 列出已经存在的依赖包
 govendor list
 // 从远端库增加新的,或者更新vendor文件中的依赖包
 govendor fetch
 // 本地存在vendor.json时候拉取依赖包,匹配所记录的版本
 govendor sync
 // 列出本地丢失的,过期的和修改的 package
 govendor status
 // 类似go get,但是会把依赖包拷贝到vendor目录
 govendor get
 govendor依赖包类型
 +local:本地包,及项目自身的包组织 l
 +external:外部包,即被$GOPATH管理,但不在vendor目录下 e
 +vendor:已被govendor管理,即在vendor目录下 v
 +std:标准库中的包 s
 +unused:未使用的包,即包在vendor目录下,但项目并没有使用 u
 +missing:代码引用了依赖包,但该包并没有找到 m
 +program:主程序包,意味着可以编译为执行文件 p
 +outside:外部包和缺失的包
 +all:所有的包

 // 默认模式,当前目录在GOPATH/src目录之外而且包含go.mod文件才会启用
 export GO111MODULE=auto
 // GOPATH模式,在vendor目录下和GOPATH目录中查找依赖包
 export GO111MODULE=off
 // module-aware模式,使用modules功能,而不会访问GOPATH,依赖包放在GOPATH/pkg/mod目录下
 export GO111MODULE=on
 export GOPROXY=''
 // 在当前目录下生成一个go.mod文件
 go mod init
 // 添加缺失的模块以及移除不需要的模块
 go mod tidy -v
 // 检查当前模块的依赖是否全部下载下来,是否下载下来被修改过
 go mod verify
 // 生成vendor文件夹,放置go.mod文件描述的依赖包
 go mod vendor -v
 // 获取依赖库
 go mod download
 // 修改依赖文件
 go mod edit 
 // 打印依赖图
 go mod graph  

设置代理: GOPROXY

go module 是用来依赖管理的,所以使用 go module 时无需使用 go get 命令( 如果要指定包的版本或者更新指定的包可以使用go get)
设置代理参考文档 https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md

// 官方依赖库
export GOPROXY='https://goproxy.io'
// 不微软依赖库
1、export GOPROXY=https://goproxy.cn/
2、export GOPROXY="https://goproxy.cn"
3、export GOPROXY=https://mirrors.aliyun.com/goproxy/
4、export GOPROXY="https://athens.azurefd.net"

你可能感兴趣的:(go module 基本使用及Goland IDE的设置)