Go Module常用命令

Go Module常用命令@TOC

Go Module常用命令

go 复制代码
go mod init  														 #初始化go.mod
go mod tidy  														 #更新依赖文件
go mod download 												 #下载依赖文件
go mod vendor 													 #将依赖转移至本地的vendor文件
go mod edit   													 #手动修改依赖文件
go mod graph  													 #打印依赖图
go mod verify 													 #校验依赖
go mod why -m <pkg> 										 #来查看是被哪个依赖引入的
go list -u -m all 											 #查看所有以升级依赖版本
go mod edit -fmt/-require=/-droprequire= #格式化/添加依赖/移除依赖项

Go Module介绍

go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用

go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等

使用go module之后我们可不用将代码放置在src下了

设置Go Module

查看当前golang env配置

go 复制代码
go env

1.13版本GO111MODULE 默认是auto, 1.13+版本根据目录下有没有go.mod文件判断是否开启Module,可以手动设置为on/off

go 复制代码
go env -w GO111MODULE="on"

设置代理 go env -w GOPROXY=下面代理的其中一个

go 复制代码
htps://goproxy.io
https://goproxy.cn (七牛云)
https://mirrors.aliyun.com/go...(阿里云)
https://mirrors.cloud.tencent...(腾讯云)
https://athens.azurefd.net(微软)

使用Go Module

一、初始化 在项目根目录下会生成go.mod文件

go 复制代码
go mod init [模块名]

二、检测依赖

go 复制代码
go mod tidy

三、下载依赖

需要先设置GOPROXY,依赖下载至$GOPATH/pkg/mod/下,并在项目根目录下生成go.sum文件

go 复制代码
go mod download

go get 升级

  1. 运行 go get -u 将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
  2. 运行 go get -u=patch 将会升级到最新的修订版本
  3. 运行 go get package@version 将会升级到指定的版本号version
  4. 运行go get如果有版本的更改,那么go.mod文件也会更改

四、导入依赖

将刚下载至GOPATH下的依赖转移到该项目根目录下的vendor(自动新建)文件下

go 复制代码
go mod vendor

五、解决冲突

  1. module declares its path as: A but was required as: B
    模块路径声明为A,需要改成B
    **解决:**在go.mod文件中增加 replace A => B
  2. 依赖包不同版本冲突
    **解决:**使用别名
go 复制代码
import(
	v1 "github.com/v1"
	v2 "github.com/v2"
)
相关推荐
江屿风1 小时前
【Linux系统】【从菜鸟驿站到操作系统:一节课打通Linux重定向与缓冲区真相】流食般投喂
linux·运维·服务器·开发语言·笔记
专业程序开发源1 小时前
springboot酒店会员点餐系统22339-计算机课程设计、毕业设计
java·javascript·vue.js·spring boot·后端·php·课程设计
AINative软件工程1 小时前
LLM 上下文满了别直接报错:Context Eviction 工程实践,5 种淘汰策略的生产对比
后端·llm·ai编程
外收内放1 小时前
Python基础语法练习题(49-50)
开发语言·python
翼辉cto1 小时前
Kotlin Multiplatform 三方库 SQLDelight 的 OpenHarmony 鸿蒙化适配实战
开发语言·kotlin·harmonyos
Cc.Y2 小时前
Java零基础入门:集合框架:ArrayList 与 LinkedList —— 告别数组的“死板“,拥抱动态容器的“灵活
java·开发语言·python
qeen872 小时前
【QT】 信号与槽初始
开发语言·笔记·qt·学习
FYKJ_20102 小时前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】C++ ChatSDK使用手册
开发语言·网络·c++·人工智能·学习·大模型
ドロロ8062 小时前
openAPI与Restful API的区别
后端·restful