从 go 工具链到 Python 工具链
go mod → uv,gofmt → ruff format,go run → uv run。
10 分钟 · 右栏代码可点击「运行」
| Go | Python | 备注 |
|---|---|---|
| go mod init | uv init | pyproject.toml ≈ go.mod |
| go get | uv add | uv.lock 锁定依赖 |
| go run main.go | uv run python main.py | 解释执行,无编译产物 |
| gofmt | ruff format | 统一风格,无 formatter 圣战 |
| go vet | ruff check | lint 一体化 |
| go test | pytest | 测试即普通函数 + assert |
| go build(单二进制) | 无原生等价物 | 分发靠环境或 PyInstaller |
Hello CLI 的两个世界
Go
1package main23import "fmt"45func main() {6 fmt.Println("hello")7}8// go run main.go
Python
1# hello.py — 没有 package 声明,没有 func main2print("hello")34# uv run python hello.py5# 或直接: python hello.py
- 脚本小于 100 行时 Python 甚至可以加 PEP 723 内联元数据,
uv run单文件自动建环境 —— 单二进制分发的最佳替代体验。
TIP
类型系统差异 — Go 是静态强类型 + 编译期检查;Python 是动态强类型 + 可选标注。加上 pyright + mypy 与类型标注后,能得到接近 Go 的静态保障,代价是标注不是强制生效的。
练一练
这张卡的示例代码已在游乐场中备好,改一改再运行。