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语言的依赖管理。


目录
相关文章
|
6天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
24 2
|
5天前
|
Go 索引
go语言中的循环语句
【11月更文挑战第4天】
13 2
|
5天前
|
Go C++
go语言中的条件语句
【11月更文挑战第4天】
16 2
|
5天前
|
Go
go语言中的 跳转语句
【11月更文挑战第4天】
13 4
|
5天前
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
18 1
|
Go 前端开发 开发者
Golang 依赖注入(Dependency Injection)
在各种大工程中少不了各种测试,其中 TDD 就是非常流行的一种,在前端开发中用的比较多的 [Jest](https://github.com/facebook/jest) 就是一种,在 Golang 开发命令行工具的时候也是需要 DI 这种模式来实现命令行测试的。
1848 0
|
11天前
|
JavaScript Java Go
探索Go语言在微服务架构中的优势
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出。本文将深入探讨Go语言在构建微服务时的性能优势,包括其在内存管理、网络编程、并发模型以及工具链支持方面的特点。通过对比其他流行语言,我们将揭示Go语言如何成为微服务架构中的一股清流。
102 53
|
10天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
32 7
|
10天前
|
关系型数据库 Go 网络安全
go语言中PostgreSQL驱动安装
【11月更文挑战第2天】
39 5
|
9天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
26 1