# Go Modules 简介

URL: https://caijiao.org/go/01-go-basic/06-go-modules
Source: docs/go/01-go-basic/06-go-modules.md
Description: 本节介绍 Go Modules 的基本概念与用法，它是 Go 官方推荐的依赖管理方式，支持版本控制、依赖隔离和构建一致性。

Go Modules（模块化系统）是 Go 1.11 引入并在 Go 1.16 后成为默认的依赖管理机制，用于管理项目的包依赖、版本控制与构建环境。它取代了传统的 `GOPATH` 模式，使项目开发更加灵活和可控。


## 1. 什么是 Go Modules？

Go Modules 是以模块为单位组织和管理代码的方式。每个模块对应一个有版本号的独立项目，具有自己的 `go.mod` 文件，记录了模块名称和依赖版本。


## 2. 初始化模块

在项目根目录下执行以下命令：

```sh
go mod init your-module-name
````

示例：

```sh
go mod init github.com/yourname/hello
```

生成的 `go.mod` 文件内容类似如下：

```go
module github.com/yourname/hello

go 1.22
```

## 3. 添加依赖

在代码中使用第三方库时，Go 会自动下载并记录依赖。例如：

```go
import "github.com/google/uuid"
```

首次运行构建命令时，会自动拉取依赖，并写入 `go.mod` 和 `go.sum`：

```sh
go build
```

## 4. 常用模块命令

* `go mod tidy`：自动添加缺失依赖，移除未使用的模块；
* `go mod download`：手动下载 `go.mod` 中列出的依赖；
* `go list -m all`：列出当前模块的所有依赖模块；
* `go clean -modcache`：清除本地模块缓存。

## 5. go.mod 与 go.sum 的作用

* `go.mod`：记录模块名称与明确的依赖版本；
* `go.sum`：校验依赖的哈希值，确保构建一致性与安全性。

---

借助 Go Modules，开发者可以轻松管理依赖版本，进行模块隔离，提升构建的可靠性与可维护性，是现代 Go 项目的标准实践方式。
