GoNote第二章 Moudles

Go Modules

1. 介绍

Go modules是官方提供的go包管理工具,用于解决go包管理和依赖问题;从1.11开始引入,到现在1.14已经比较完善,1.16已经全面推荐使用,并且默认为开启;Go Modules类似于JS的NPM,Java的maven和gradle。

  • GO111MODULE=off: 不使用 modules 功能。
  • GO111MODULE=on: 使用 modules 功能,不会去 GOPATH 下面查找依赖包。
  • GO111MODULE=auto: Golang 自己检测是不是使用 modules 功能。
  • 计划在 Go 1.17 中放弃对 GOPATH将忽略 GO111MODULE,需要关注默认下载目录如何设置,此特性静观1.17版本发布;

2. 关于go.mod

go.mod是Go项目的依赖描述文件:

module hello

go 1.14

require github.com/gogf/gf v1.15.3
  1. module是配置项目名称
  2. go配置的是使用的golang版本
  3. require配置引用第三方依赖包路径和版本,latest表示最新版本;

配置完编译成功后,生成go.sum依赖分析结果,里面会有当前所有的依赖详细信息;

3. go modules指令

  1. go get

    go get -u (没有参数)下载、更新当前包下 直接和间接的依赖的最新版本,并不会更新整个项目。
    go get -u ./...下载、更新当前项目根目录下直接或间接的依赖的最新版本,但是会排除测试包的依赖;例如将v1.2.1更新为v2.0.1
    go get -u=patch ./...下载、更新当前项目根目录下直接或间接的依赖的大版本的最新小版本,例如,将v1.2.1更新为v1.2.5
    go get -u -t ./... 和go get -u ./...相似,但是会更新测试包的依赖
    go get -d 只执行下载动作,而不执行安装动作;不再支持go get -m ,使用go get -d替代。
    
  2. go list

    go list -m all 列出当前项目build时需要使用直接或间接依赖的版本。 
    go list -u -m all 不仅会列出当前使用模块的版本,还会列出当前使用模块的最新小版本和最新版本。 
    
  3. go build ./… 构建当前项目

  4. go test ./… 执行当前项目下的测试

  5. go mod

go mod tidy 删除不必要的依赖,添加OS, architecture, and build tags组合所需要的依赖。 
go mod vendor 可选步骤,用于建立vendor文件夹,用于vendor机制的包管理
go mod init 将go项目初始化成module-mode,使用go modules进行依赖管理。
go mod verify 校验go.sum记录的依赖信息是否正确

4. go modules需要注意的地方

  • 在项目根目录下生成go.mod
  • 项目中的包引用使用import "[module名称]/[包所在文件在项目中的相对路径]"

二、Goland配置

首先我们需要开启go modules功能,然后配置代理;不配置代理会访问国外地址,会很慢;建议使用以下三个地址:

  • https://goproxy.io
  • https://goproxy.cn
  • https://mirrors.aliyun.com/goproxy/

在这里插入图片描述

项目结构:

在这里插入图片描述

hello world程序,创建go.mod,内容如下

module hello

go 1.14

require (
github.com/gogf/gf v1.15.3
)

代码内容如下:

package main

import (
   "fmt"
   "github.com/gogf/gf"
   "github.com/gogf/gf/crypto/gmd5"
)

func main(){
   fmt.Println("hello world!")
   fmt.Println(gf.VERSION)
   fmt.Println(gmd5.EncryptString("123456"))
}

第一次我们需要下载依赖包,可以选择go.mod文件右键选择Go Mod Tidy

或者点击没下载的包,alt+enter键,选择Sync packages of hello

在这里插入图片描述

然后运行程序看到运行结果

hello world!
v1.15.3
e10adc3949ba59abbe56e057f20f883e <nil>

Process finished with exit code 0

三、IDEA 中开启Go Modules

File-> settings-> Languages & Frameworks-> Go -> Go Modules(vgo)
选择开启Go Modules(vgo) integration

或者直接在环境变量中设置此环境变量

GOPROXY = https://proxy.golang.com.cn,direct 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好奇新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值