写点什么

Go Modules:Go 语言依赖管理的新篇章

作者:左诗右码
  • 2024-06-17
    上海
  • 本文字数:1049 字

    阅读完需:约 3 分钟

今天我们来聊聊 Go 语言的依赖管理神器——Go Modules。


自从 Go 1.11 版本引入以来,Go Modules 已经成为了 Go 语言依赖管理的标准。接下来,我将用简单易懂的语言,带你一步步了解 Go Modules 的安装、使用和最佳实践。

Go Modules 简介

Go Modules 是 Go 语言官方推荐的依赖管理工具,它解决了以往使用GOPATH时遇到的许多问题,如依赖冲突、版本控制等。

GOPATH 目录

在 Go Modules 问世之前,Go 语言使用GOPATH环境变量来管理项目的工作空间,它包含三个子目录:


  • bin:存储编译生成的二进制文件。

  • pkg:存储预编译的目标文件,加快后续编译速度。

  • src:存储所有 .go 文件或源代码。在编写 Go 应用程序,程序包和库时,一般会以 $GOPATH/src/github.com/foo/bar 的路径进行存放。

go mod 命令

Go Modules 通过go mod命令行工具来管理依赖,你可以使用以下命令来查看所有可用的go mod子命令:


go help mod
复制代码

常用 go mod 命令

go mod 环境变量

Go Modules 与一些环境变量紧密相关,这些环境变量可以调整 Go Modules 的行为。

GO111MODULE

GO111MODULE控制模块支持的开启状态。


  • auto:项目包含go.mod文件时启用 Go modules(默认值)。

  • on:总是启用 Go modules。

  • off:禁用 Go modules。


设置方法:


go env -w GO111MODULE=on
复制代码

GOPROXY

GOPROXY用于设置 Go 模块代理,加速模块下载。


默认值:https://proxy.golang.org,direct


设置国内镜像站点:


# 1. 七牛 CDNgo env -w  GOPROXY=https://goproxy.cn,direct
# 2. 阿里云go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 3. 官方go env -w GOPROXY=https://goproxy.io,direct
复制代码

GOSUMDB

GOSUMDB用于确保下载的模块版本未被篡改。


默认值:sum.golang.org


国内用户可以通过设置GOPROXY来间接访问GOSUMDB

GONOPROXY/GONOSUMDB/GOPRIVATE

这些环境变量用于处理私有模块。


  • GONOPROXY:设置不走 Go Proxy 的 URL 规则。

  • GONOSUMDB:设置不检查哈希的 URL 规则。

  • GOPRIVATE:设置私有模块的 URL 规则。


通常,设置GOPRIVATE即可:


go env -w GOPRIVATE=git.example.com
复制代码

使用 Go Modules 初始化项目

# 开启 Go Modules 模块go env -w GO111MODULE=on
# 创建项目目录mkdir -p $HOME/modules_test
cd $HOME/modules_test
# 初始化 go.mod 文件go mod init github.com/pudongping/moudles_test
# 下载依赖库go get -v github.com/pudongping/test_moudles
复制代码

总结

通过今天的学习,我们了解了 Go Modules 的基本使用方法,包括环境变量的配置、项目的初始化、依赖的下载和更新等。Go Modules 作为 Go 语言官方推荐的依赖管理工具,极大地简化了项目管理的复杂性。

发布于: 3 小时前阅读数: 5
用户头像

左诗右码

关注

全网同名,欢迎关注交流。 2018-11-22 加入

三观比五官更正,思想比套路更深。常用技术栈PHP、Go、Python,享受编程,平时爱好写点文章。V公主号:「左诗右码」,欢迎关注交流。

评论

发布
暂无评论
Go Modules:Go语言依赖管理的新篇章_左诗右码_InfoQ写作社区