尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[go v01 ]

[go v01 ]
📅 发布时间:2026/6/20 10:58:34
# adward @ adwarddeMacBook-Pro in ~  [10:41]  
$ go env GOPATH
/Users/adward/developer/machines/golang/gopath1.25.4
(base) 
# adward @ adwarddeMacBook-Pro in ~  [10:41]  
$ go env GOMODCACHE
/Users/adward/developer/machines/golang/gopath1.25.4/pkg/mod
(base) 
# adward @ adwarddeMacBook-Pro in ~  [10:41]  
$ go env GO_HOME   (base) 
# adward @ adwarddeMacBook-Pro in ~  [10:41]  
$ go env GOROOT 
/Users/adward/developer/machines/golang/go1.25.4
(base) 
# adward @ adwarddeMacBook-Pro in ~  [10:41]  
$ 

Go 环境变量入门笔记:GOROOT、GOPATH、GOPROXY 到底是干什么的?

之前学习 Go 的时候配置过一些环境变量,比如:

export GO_HOME="/Users/adward/developer/machines/golang/go1.25.4"
export GOPATH="/Users/adward/developer/machines/golang/gopath1.25.4"
export GOPROXY="https://goproxy.cn"

时间久了容易忘,这里简单整理一下。


1. GOROOT / GO_HOME:Go 本体在哪里

严格来说,Go 官方常用的是:

GOROOT

它表示:

Go 语言本体的安装目录

里面一般有:

bin/go
pkg/
src/

也就是说,GOROOT 里面放的是 Go 编译器、标准库、Go 自带工具等内容。

有些人习惯自己写一个:

export GO_HOME="/Users/adward/developer/machines/golang/go1.25.4"

这个 GO_HOME 不是 Go 官方核心变量,只是自己定义的一个别名。

通常会配合:

export PATH="$GO_HOME/bin:$PATH"

让终端能找到 go 命令。

简单理解:

GOROOT / GO_HOME = Go 本体安装在哪里

2. GOPATH:Go 的用户工作区

GOPATH 不是 Go 的安装目录。

它更像是 Go 给用户侧内容准备的工作区。

常见结构:

$GOPATH/bin
$GOPATH/pkg
$GOPATH/pkg/mod

现在最常见的用途有两个。


第一:保存 go install 安装出来的命令行工具

比如执行:

go install github.com/air-verse/air@latest

安装出来的 air 命令通常会放到:

$GOPATH/bin

所以通常需要配置:

export PATH="$GOPATH/bin:$PATH"

这样才能直接在终端执行:

air

第二:保存 Go 下载的第三方依赖缓存

现在 Go 项目主要使用 Go Modules,也就是项目里会有:

go.mod
go.sum

当项目需要第三方依赖时,Go 会把依赖源码下载到 module 缓存里,通常是:

$GOPATH/pkg/mod

例如:

$GOPATH/pkg/mod/github.com/gin-gonic/gin@v1.10.0

所以,项目越多,下载过的依赖越多,$GOPATH/pkg/mod 可能会越来越大。

这是正常的,因为 Go 是让多个项目共享同一个依赖缓存,避免每个项目都重复下载一份。


3. 现在还需要把项目放到 GOPATH/src 下面吗?

一般不需要。

早期 Go 项目通常要放在:

$GOPATH/src/xxx

但现在 Go Modules 已经是主流。

现在写项目通常是:

mkdir my-go-project
cd my-go-project
go mod init my-go-project

只要项目里有 go.mod,项目就可以放在任意目录,比如:

~/projects/my-go-app
~/Desktop/test-go
~/developer/workspace/demo

所以:

GOPATH 不是每个项目都设置一次

一般一台电脑设置一个 GOPATH 就够了。


4. go.mod 和 go.sum 是什么?

go.mod 可以理解成项目的依赖清单。

例如:

module my-appgo 1.25require github.com/gin-gonic/gin v1.10.0

它表示:

当前项目叫 my-app
使用 Go 1.25
依赖 github.com/gin-gonic/gin v1.10.0

go.sum 则主要记录依赖的校验信息,用来确认下载下来的依赖没有被篡改。

可以简单理解为:

go.mod = 依赖清单
go.sum = 依赖校验表

类比其他语言:

Go      -> go.mod / go.sum
Node.js -> package.json / package-lock.json
Python  -> requirements.txt / pyproject.toml / poetry.lock
Java    -> pom.xml / build.gradle

5. go get 和 go mod tidy 做了什么?

当执行:

go get github.com/gin-gonic/gin

或者:

go mod tidy

Go 大概会做这些事:

1. 分析当前项目需要哪些依赖
2. 修改 go.mod
3. 修改 go.sum
4. 下载依赖源码到 $GOPATH/pkg/mod
5. 后续编译时从缓存中读取这些源码

注意:

依赖源码通常不会复制到当前项目目录里

当前项目主要只是记录依赖信息。

真实源码通常在:

$GOPATH/pkg/mod

6. go install 和 go get 的区别

这个很容易混。

go get / go mod tidy

主要用于当前项目的依赖管理。

比如项目代码里用了:

import "github.com/gin-gonic/gin"

这时候通常使用:

go get github.com/gin-gonic/gin

或者:

go mod tidy

它们会更新当前项目的 go.mod 和 go.sum。


go install

主要用于安装命令行工具。

比如:

go install github.com/air-verse/air@latest

它会把可执行文件安装到:

$GOPATH/bin

如果设置了 GOBIN,则会安装到 GOBIN 指定的位置。

简单记:

项目要 import 的库:go get / go mod tidy
终端要直接运行的工具:go install

7. GOPROXY:Go 下载依赖的代理

GOPROXY 表示 Go 下载第三方依赖时走哪个代理。

比如:

export GOPROXY=" https://goproxy.cn ,direct"

含义是:

优先从 goproxy.cn 下载依赖
如果代理下载不到,就 direct 直接访问原始地址

在国内环境下,配置 GOPROXY 可以明显减少依赖下载失败的问题。


8. 推荐的基础配置

如果是自己手动管理 Go 安装目录,可以这样配置:

export GO_HOME="/Users/adward/developer/machines/golang/go1.25.4"
export GOROOT="$GO_HOME"export GOPATH="/Users/adward/developer/machines/golang/gopath1.25.4"
export GOPROXY=" https://goproxy.cn ,direct"export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"

含义分别是:

GO_HOME / GOROOT:Go 本体安装目录
GOPATH:Go 用户工作区
GOPROXY:Go 下载依赖使用的代理
PATH:让系统能找到 go 命令和 go install 安装的工具

9. 如果 GOPATH 太大怎么办?

因为依赖缓存都在:

$GOPATH/pkg/mod

所以用久了可能会变大。

可以查看当前配置:

go env GOPATH
go env GOMODCACHE

清理 module 缓存:

go clean -modcache

清理后,如果项目再次需要这些依赖,Go 会重新下载。


最后总结

可以用这一句话记住:

GOROOT / GO_HOME:Go 本体在哪里
GOPATH:Go 的用户工作区,放工具和依赖缓存
GOPROXY:Go 下载依赖走哪个代理
go.mod:当前项目需要哪些依赖
go.sum:依赖校验信息

再压缩一点:

go.mod 负责记录“这个项目要什么”
$GOPATH/pkg/mod 负责保存“真实下载下来的依赖”
$GOPATH/bin 负责保存“go install 安装出来的工具”

现在写 Go 项目,重点看项目里有没有 go.mod,而不是看它是不是放在 $GOPATH/src 下面。

相关新闻

  • 2026 年 6 月重庆奢侈品黄金回收门店盘点报告:耀辉领衔靠谱机构全维度解析 - 奢侈品回收
  • 黄金铂金白银回收门店整理,各区均有分店联系方式 - 千叶啊
  • 如何快速备份QQ空间历史数据:GetQzonehistory完整指南与实用技巧

最新新闻

  • 第一个量化实验
  • 沈阳刑事律师排行盘点:专业实力与本地经验对比 - 互联网科技品牌测评
  • 2026年国内活性炭吸附设备厂家排行 解决选型痛点适配全场景 - 速递信息
  • 3080Ti显存仅12GB,如何用QLoRA微调Qwen2.5-7B-Instruct
  • 2026年6月最新卡地亚中国官方售后客户网点地址及热线电话 - 卡地亚服务中心
  • 2026贵阳黄金回收哪家靠谱?五家口碑标杆实测打分,第一名零套路断层领跑 - 速递信息

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号