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:

bash 复制代码
go env GOPATH

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 创建:

bash 复制代码
go mod init 项目名

生成的 go.mod 示例:

复制代码
module gotest        ← 模块名

go 1.24              ← Go 版本

require (            ← 依赖的第三方包
    github.com/xxx v1.2.3
)

2.2 go.sum --- 依赖锁文件

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

作用:

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

2.3 常用依赖命令

bash 复制代码
# 添加依赖(在代码中 import 后,go mod tidy 会自动下载)
go mod tidy            # 整理依赖:添加需要的,移除没用的

# 查看依赖
go list -m all         # 列出所有依赖

# 下载依赖到本地缓存
go mod download

# 将依赖复制到 vendor 目录(可选,类似于 node_modules)
go mod vendor

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

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

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

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


四、最简单的代码结构

一个最小的 Go 项目:

复制代码
myapp/
├── go.mod        ← go mod init 生成
└── main.go       ← 入口文件
go 复制代码
// main.go --- 最简单的 Go 程序
package main      // 可执行程序必须用 package main

import "fmt"      // 标准库:格式化输入输出

func main() {     // 程序入口
    fmt.Println("Hello, Go!")
}

五、常用运行命令

bash 复制代码
# 直接运行(编译 + 运行,不生成文件)
go run main.go

# 编译为可执行文件
go build          # 生成 .exe(Windows)或 可执行文件(Linux/Mac)

# 编译并安装到 GOBIN 目录
go install

# 格式化代码(Go 官方标准)
gofmt -l .        # 检查格式
gofmt -w .        # 自动修正格式

# 静态检查
go vet ./...      # 检查代码中可能的 bug

# 查看环境信息
go env            # 打印所有环境变量
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 编译出可执行文件
相关推荐
dadaobusi4 小时前
学习: PCIe 6.0 的 L0p
学习
紧跟先前的步伐5 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
燕落南枝6 小时前
CSS 学习:类型选择器与 AI 注释实战
css·人工智能·学习
Swilderrr10 小时前
论文精读:《Directory-Aware Query and Maintenance in Vector Databases》
笔记·学习
kkkkkkkkkk_Z10 小时前
新手自学嵌入式 | 学习日记:LCD显示原理、PWM控制、电容触摸屏(GT9147)驱动开发与项目实战
驱动开发·学习
SatanII10 小时前
K8s 存储与配置管理|Volume、ConfigMap、Secret 核心笔记
笔记·rpc·kubernetes
LXT71211 小时前
每日英语一读|为什么夏天的雷雨,总爱在傍晚出现?
深度学习·学习
知识分享小能手11 小时前
C学习教程,从入门到精通,C语言文件 — 完整知识点详解(14)
c语言·网络·学习
羊羊一洋11 小时前
ROM&RAM
c语言·stm32·学习
I'mChloe12 小时前
飞牛NAS部署flatnotes实战:Docker、8080端口、Markdown笔记与固定地址访问
笔记·docker·容器