news 2026/8/21 22:26:36

Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令

📝本文首发于 栏轩·阁

欢迎访问阅读原文,获取更好的阅读体验。


一、Go 的项目结构

Go 的项目结构经历了两代:GOPATH 模式(旧)和Go Modules 模式(新,现在用的)。

1.1 GOPATH 模式(了解即可)

早期 Go 的所有项目都必须放在$GOPATH/src下。GOPATH默认是$HOME/go(Linux/Mac)或C:\Users\用户名\go(Windows)。

$GOPATH/ ├── src/ ← 源代码放在这里 ├── pkg/ ← 编译后的包 └── bin/ ← 编译后的可执行文件

查看当前的 GOPATH:

goenvGOPATH

1.2 Go Modules 模式(现代方式)

从 Go 1.11 开始引入,Go 1.16 起默认开启。你不再需要把项目放在 GOPATH 下,任何目录都可以是一个 Go 项目。

每个 Go 项目就是一个模块(Module),模块根目录下必须有go.mod文件。


二、依赖管理:go.mod 和 go.sum

2.1 go.mod — 模块定义文件

类似于 Node.js 的package.json,但更简洁。用go mod init创建:

go mod init 项目名

生成的go.mod示例:

module gotest ← 模块名 go 1.24 ← Go 版本 require ( ← 依赖的第三方包 github.com/xxx v1.2.3 )

2.2 go.sum — 依赖锁文件

类似于package-lock.jsonyarn.lock不要手动编辑,由 Go 自动维护。

作用:

  • 记录每个依赖包的哈希值
  • 确保每次下载的依赖内容一致
  • 防止依赖被篡改

2.3 常用依赖命令

# 添加依赖(在代码中 import 后,go mod tidy 会自动下载)go mod tidy# 整理依赖:添加需要的,移除没用的# 查看依赖go list-mall# 列出所有依赖# 下载依赖到本地缓存go mod download# 将依赖复制到 vendor 目录(可选,类似于 node_modules)go mod vendor

三、GoLand 创建项目的三种模式

创建项目时会看到三个选项:

模式说明什么时候用
Go普通的 Go 项目,使用 Go Modules,最常用✅ 默认选择
Go (GOPATH)老式 GOPATH 模式项目❌ 除非维护老项目
App EngineGoogle App Engine 专用❌ 几乎用不到

现在一律选第一个「Go」模式,它自动启用 Go Modules。


四、最简单的代码结构

一个最小的 Go 项目:

myapp/ ├── go.mod ← go mod init 生成 └── main.go ← 入口文件
// main.go — 最简单的 Go 程序packagemain// 可执行程序必须用 package mainimport"fmt"// 标准库:格式化输入输出funcmain(){// 程序入口fmt.Println("Hello, Go!")}

五、常用运行命令

# 直接运行(编译 + 运行,不生成文件)go run main.go# 编译为可执行文件go build# 生成 .exe(Windows)或 可执行文件(Linux/Mac)# 编译并安装到 GOBIN 目录goinstall# 格式化代码(Go 官方标准)gofmt-l.# 检查格式gofmt-w.# 自动修正格式# 静态检查go vet ./...# 检查代码中可能的 bug# 查看环境信息goenv# 打印所有环境变量go version# 查看 Go 版本

run vs build 区别

命令作用生成文件
go run编译并运行,适合开发调试❌ 不生成
go build编译为可执行文件✅ 生成
go install编译并安装到GOBIN✅ 安装到全局

六、小结

知识点一句话
GOPATH旧的项目组织方式,默认~/go
Go Modules现在的标准,任何目录都能当项目
go.mod项目身份证,类似 package.json
go.sum依赖锁文件,自动维护
go run直接跑代码
go build编译出可执行文件
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 22:20:27

TikTok Shop上架软件:轻松管理200+店铺的底层防风控实战

TikTok Shop上架软件:轻松管理200店铺的底层防风控实战 每次有人问我店群怎么做大,我就一句话:TikTok Shop的自动化上架,是店群运营中最耗人力也最容易出错的环节。 手动上架一个商品从填写标题、上传主图、设置SKU、填写详情到…

作者头像 李华
网站建设 2026/8/21 22:19:39

基于Python的电商用户消费行为分析(源码+lw+部署文档+讲解等)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华
网站建设 2026/8/21 22:17:18

基于Flink CDC实现MySQL到Elasticsearch秒级数据同步实战

这次我们来看一个在数据同步领域非常实际的问题:搜索列表页和商品详情页的价格不一致,用户看到的价格比点进去贵了8分钟。这种“数据延迟”问题在电商、内容平台、实时报表等场景下非常常见,直接损害用户体验和业务可信度。今天要讨论的解决方…

作者头像 李华
网站建设 2026/8/21 22:16:57

告别无效改词句:人文社科综述降AIGC的五步实操法(附差异化方案)

前言 对于人文社科专业的同学而言,文献综述是整篇论文的重中之重,同时也是 AI 检测最容易 “中招” 的板块。不少同学整篇论文其他章节 AI 检测结果都很理想,唯独综述部分 AIGC 率居高不下。 人文社科综述需要梳理大量前人研究成果&#xf…

作者头像 李华
网站建设 2026/8/21 22:16:10

头歌实践教学平台:大数据存储2023(一)

一、HBase 开发:使用Java操作HBase第1关:创建表任务描述 本关任务:使用Java代码在HBase中创建表。相关知识 为了完成本关任务,你需要掌握:1.如何使用Java连接HBase数据库,2.如何使用Java代码在HBase中创建表…

作者头像 李华
网站建设 2026/8/21 22:15:14

告别复制粘贴:用浏览器插件GaryPrompt构建高效AI提示词工作流

最近在折腾各种 AI 工具时,我发现了一个挺有意思的现象:很多人热衷于在网上寻找和复制所谓的“skill”或“prompt”,然后粘贴到豆包这类 AI 助手或网页版里,试图解锁一些高级功能或优化指令。这个过程,像极了早期互联网…

作者头像 李华