Go语言依赖管理和工程结构完全攻略

简介: Go语言依赖管理和工程结构完全攻略

Go语言依赖管理经历了几种工具,目前主流的是Go Modules

Go Modules自Go 1.11版本引入,通过go.mod文件管理依赖。主要特点如下

1. 初始化go.mod

在项目目录下执行`go mod init`生成go.mod文件,定义模块路径。

2. 记录依赖

执行`go get`会自动把依赖写入go.mod和go.sum。

3. 升级依赖

使用`go get package@version`可以升级依赖。

4. 使用依赖

不需要显式导入go.mod中的依赖,Go会自动引入。

5. 去掉未使用的依赖

`go mod tidy`可以删除未使用的依赖。

6. 版本选择

默认使用最新版本,可以通过`go get package@version`选择版本。

7. 引入本地包

使用replace指令可以引入本地包。

8. exclude和replace排除依赖

可用exclude排除不需要的包,replace注入 fork的包。

9. 提交依赖

只提交go.mod和go.sum文件,不提交vendor文件夹。

Go Modules实现了语义化版本管理、可重现的构建,是Go语言依赖管理的未来方向。

还有些补充的内容

1. 与GOPATH的关系

启用Go Modules后,会忽略GOPATH,不再以其来查找和下载依赖。Go Modules可以与GOPATH共存。

2. 模块代理

可以配置GOPROXY来指向代理,用于在企业环境下控制访问。

3. vendor目录

go mod vendor可以将依赖复制到vendor目录,用于隔离网络环境。

4. 语义化版本

Go Modules要求依赖使用语义化版本号,如v1.2.3。

5. 兼容性

低于Go 1.11的版本需要设置环境变量GO111MODULE=on来启用模块支持。

6. go.mod文件语法

go.mod使用特定语法记录模块路径、依赖关系、替换等信息。

7. go mod命令

go mod download/tidy/verify等命令可以管理模块缓存和依赖。

以上是Go Modules的更多高级用法,如版本控制、私有仓库配置、命令使用等方面。这有助于更全面地理解Go语言的依赖管理。


目录
相关文章
|
9天前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
46 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
28天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
106 67
|
4天前
|
算法 安全 Go
Go 语言中实现 RSA 加解密、签名验证算法
随着互联网的发展,安全需求日益增长。非对称加密算法RSA成为密码学中的重要代表。本文介绍如何使用Go语言和[forgoer/openssl](https://github.com/forgoer/openssl)库简化RSA加解密操作,包括秘钥生成、加解密及签名验证。该库还支持AES、DES等常用算法,安装简便,代码示例清晰易懂。
32 12
|
7天前
|
监控 算法 安全
解锁企业计算机监控的关键:基于 Go 语言的精准洞察算法
企业计算机监控在数字化浪潮下至关重要,旨在保障信息资产安全与高效运营。利用Go语言的并发编程和系统交互能力,通过进程监控、网络行为分析及应用程序使用记录等手段,实时掌握计算机运行状态。具体实现包括获取进程信息、解析网络数据包、记录应用使用时长等,确保企业信息安全合规,提升工作效率。本文转载自:[VIPShare](https://www.vipshare.com)。
19 0
|
21天前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数
|
29天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
40 7
|
29天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
29天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
102 71
|
1月前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
101 62