当前位置: 首页 > news >正文

go mod教程、go module

什么是go mod

go mod 是go语言的包管理工具,类似java 的maven,go mod的出现可以告别goPath,使用go module来管理项目,有了go mod账号就不需要非得把项目放到gopath/src目录下了,你可以在磁盘的任何位置新建一个项目

go mod在go语言的1.11版本后推出,但是在早期,go mod 非常难用,被广大的开发者所诟病;现在已经好了很多了

常用命令

通过命令go mod help 可以看到有go mod有以下几个命令

  • download :下载module到本地缓存,下载到GOMODCACHE指定的路径
  • edit: 编辑
  • graph :以文本形式打印模块需求图
  • init :创建go mod 项目
  • tidy 添加缺失module,或者去除没有使用的module
  • vendor 将项目的依赖库下载到项目内部,作为项目的一部分来编译。
  • verify 验证依赖是否正确
  • why explain why packages or modules are needed

下载依赖 go get方式

go get命令会下载指定的包,并将下载的包进行编译,然后安装到特定目录。

go get  github.com/go-redis/redis

除此之外,go get还提供以下几个参数

  • -d :只下载不安装
  • -f :只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
  • -t :同时也下载需要为运行测试所需要的包
  • -u :强制使用网络去更新包和它的依赖包
  • -v :显示执行的命令

下载依赖 go.mod方式

在mod文件中添加 require(依赖链接 版本号) 即可,示例:

module demo_94_tailgo 1.17require (github.com/hpcloud/tail v1.0.0 // indirect
)

添加完成后在执行以下命令即可将依赖下载到本地

go mod download 

查看go mod状态

go env

找到以下的配置项就是go mod的配置,为什么叫 GO111MODULE 呢,中间的111是因为从1.11版本后推出的功能,

set GO111MODULE=on

设置代理

默认的代理是GOPROXY=https://proxy.golang.org,direct,但是这个链接是国外的网站,得翻墙才能用,所以我们用国内的代理

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

开启/关闭go mod

GO111MODULE 有三种状态

  • on : 开启
  • off : 关闭
  • auto :默认值,go命令会根据当前目录来决定是否启用module功能

开启 go mod

go env -w GO111MODULE=on

关闭 go mod

go env -w GO111MODULE=off

download 下载

下载module到本地缓存,下载到GOMODCACHE指定的路径,可通过go env -w GOMODCACHE=/xxx/xxx修改cache路径

go mod download

edit 编辑go.mod文件

# -replace 表示 包下载不下来的时候使用,--replace=新地址=下载不下来的地址
go mod edit -replace golang.org/x/crypto@v0.0.0=github.com/golang/crypto@latest# -exclude 表示排除某个包
go mod edit -exclude golang.org/x/crypto@v0.0.0# -require 表示导入某个包
go mod edit -require golang.org/x/crypto@v0.0.0# -json 以json方式打印go.mod 模块对象
go mod edit -json

graph

以文本形式打印模块需求图

go mod graph

init 创建go mod 项目

进入项目目录下,执行以下命令,其中projectName 是你的项目名称, 建议和目录一致

go mod init projectName

执行完后会自动创建一个go.mod的文件,内容如下

module xx.xx.com/xd/projectNamego 1.14

tidy

添加缺失module,或者去除没有使用的module

go mod tidy

vendor

将项目的依赖库下载到项目内部,作为项目的一部分来编译。此时会生产一个vendor的目录,一般情况下都用不上

go mod vendor

verify

验证依赖是否正确

go mod verify

why

查找依赖

go mod  why

打包编译

go build 编译

go build命令会编译包及其依赖,生成的文件存放在当前目录下。而且go build只对main包有效,其他包不起作用

go build

go install 编译并安装

和go build命令比较相似,go install对于非main包会生成静态文件放在GOPATH/pkg目录下,文件扩展名为a。如果为main包,则会在GOPATH/pkg目录下,文件扩展名为a。如果为main包,则会在GOPATH/pkg目录下,文件扩展名为a。如果为main包,则会在GOPATH/bin下生成一个和给定包名相同的可执行二进制文件。

go install
go build 、go install、go get 区别
  • go build: go build命令是在当前目录编译生成可执行文件,注意 go build 指令会调用所有引用包的源码进行重新编译而不是使用之前pkg里的文件
  • go install: 执行 go install 命令会完成类似 go build 的功能 ,但go install 命令执行生成的可执行文件是在【$GOPATH/bin】目录中
  • go get: 该命令可以理解为两个操作 git clone + go install , 执行会将远程代码clone 到【$GOPATH/src】 目录中
http://www.dtcms.com/a/300940.html

相关文章:

  • docker 自定义网桥作用
  • JavaScript手录07-数组
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-38,(知识点:晶体管放大电路频率特性,下限截止频率)
  • 将 JsonArray 类型的数据导出到Excel文件里的两种方式
  • 内存泄漏问题排查
  • mmap的调用层级与内核态陷入全过程
  • java8+springboot2.5.4环境Markdwon转word
  • 设计模式(十四)行为型:职责链模式详解
  • add新增管理员功能、BaseController类的简介--------示例OJ
  • linux安装nvm教程
  • Windows 11修复损坏的 ISO 文件
  • 二、搭建springCloudAlibaba2021.1版本分布式微服务-Nacos搭建及服务注册和配置中心
  • RHEL9 网络配置入门:IP 显示、主机名修改与配置文件解析
  • 【C++】红黑树实现
  • logstash采集springboot微服务日志
  • 使用Python,OpenCV,K-Means聚类查找图像中最主要的颜色
  • C语言:函数
  • AI大模型前沿:Muyan-TTS开源零样本语音合成技术解析
  • 力扣129. 求根节点到叶节点数字之和
  • Python day26
  • 基于 KNN 算法的手写数字识别项目实践
  • OpenLayers 综合案例-点位聚合
  • Java Ai(day04)
  • Android CameraX 使用指南:简化相机开发
  • 7.25 C/C++蓝桥杯 |排序算法【下】
  • git删除远程分支和本地分支
  • Windows10+WSL2+Docker相关整理
  • IP--MGER综合实验报告
  • git 修改 更新
  • Red靶机攻略