Go学习笔记(入门版)
Go学习笔记(入门版)
Go 文件的执行
1)run 和 build 的区别
go run 和 go build 是 Go 语言中两个不同的命令,主要区别如下:
go run :
- 编译并立即执行:将源文件编译成临时可执行文件,然后立即运行
- 不生成持久文件:执行完成后,临时文件会被自动清理
- 适用场景:开发测试,快速验证代码逻辑
- 示例:
1 2
go run main.go # 编译并执行单个文件 go run . # 编译并执行当前包
go build :
- 只编译不执行:生成可执行文件,但不会自动运行
- 生成持久文件:在当前目录生成可执行文件(Windows:
.exe,Linux/Mac: 无扩展名) - 适用场景:适合部署分发,生成可以独立分发的二进制文件
- 编译:
1 2
go build -o myapp.exe # 编译并指定输出文件名 # 使用"-o"指定路径和文件名
- 执行:
1
./app.exe # Windows
主要区别总结
| 特性 | go run | go build |
|---|---|---|
| 执行方式 | 自动运行 | 只编译不运行 |
| 输出文件 | 无持久文件 | 生成可执行文件 |
| 使用场景 | 开发测试 | 部署分发 |
| 编译缓存 | 使用 | 使用 |
| 跨平台编译 | 不支持 | 支持(需指定 GOOS/GOARCH) |
| 依赖嵌入 | 不适用 | 可以嵌入静态资源 |
2)mod 介绍
go mod init 是给 Go 项目办身份证,让 Go 知道这个项目是谁、需要哪些外部代码包。
生成的go.mod 和 go.sum 都要提交 Git。
必须做的三件事
1
2
3
4
5
6
7
8
# 1. 进项目目录
cd my-project
# 2. 办身份证(只需一次)
go mod init my-project
# 3. 写代码、导包、运行
# Go 自动处理依赖
三个关键文件
go.mod- 身份证 + 购物清单1 2 3 4 5
module my-project // 项目名 go 1.21 // Go 版本 // 下面自动记录需要的包和版本 require github.com/xxx/yyy v1.2.3
-
go.sum- 安全锁(自动生成,别动它) - 你的代码 -
.go文件
为什么必须?
因为现代 Go 代码基本都会用别人的包。比如:
1
import "github.com/gin-gonic/gin" // 网络框架
没有 go.mod → Go 不知道去哪找这个包、用哪个版本
有 go.mod → Go 自动下载正确版本
相关命令总结
1
2
3
4
5
6
7
8
9
10
11
# 初始化项目
go mod init 项目名
# 自动整理依赖(经常用)可以解决大部分依赖问题
go mod tidy
# 清除无用依赖
go clean -modcache
# 查看依赖
go list -m all
记住这三点就够了
- 每个项目都要先
go mod init go.mod和go.sum都要提交 Gitgo mod tidy解决大部分依赖问题
类比:
- 没有
go.mod→ 去超市随便拿东西 - 有
go.mod→ 照着购物清单买东西,每次都一样
参考
【引入】1
本文由作者按照
CC BY 4.0
进行授权