go version
从 Hello, World 到并发思维。用一份 8 页的技术分享,快速理解 Go 为什么适合做后端服务、CLI 工具和云原生应用。
软件工程 / 计算机相关课程分享
cat agenda.md
如果目标不是“炫技”,而是尽快写出结构清晰、可以交付的程序,Go 往往是一条很短的路径。
先抓住语言的价值主张,再学语法细节。Go 更像一套工程化选择,而不只是另一门语法。
net/http、json、context、testing 已经覆盖了大量基础工作。goroutine、channel、select 让并发任务拆分和通信更自然。适合:后端服务、微服务、网关、中间件、运维工具。不必强求:重前端交互、极度依赖动态元编程的场景。
go run .
# hello-go/main.go package main import "fmt" func main() { name := "低配全栈" fmt.Printf("Hello, %s and Go!\n", name) } # 常用起步命令 $ go mod init hello-go $ go run . $ go fmt ./... $ go test ./...
package main 表示可执行程序;func main() 是入口;导入包后直接调用标准库函数。不要把 Go 的并发只理解成“开线程”。更重要的是,如何把任务拆开,让数据安全地流动起来。
关键词:goroutine 负责并发任务,channel 负责通信,select 负责多路等待,context 负责生命周期控制。
go toolchain
把下面四条变成默认动作,你写出来的 Go 代码就已经有了“工程感”。
go fmt,统一风格。Go 社区默认不鼓励在格式化上消耗团队讨论成本。go test ./... 建立最基本的回归保护。哪怕先只写最核心的 happy path 也值得。go mod 管依赖,学会读 go.mod。依赖关系清楚,项目迁移和 CI 会轻松很多。error、context、接口边界写清楚,很多代码组织问题会自然变简单。按“能跑起来 -> 能写结构 -> 能做小项目”的顺序推进,比零散刷语法更有效。
# Day 1 环境安装 + 变量 / 函数 / 包 # Day 2 array / slice / map + if / for / switch # Day 3 struct / method / interface / error # Day 4 goroutine / channel / select / context # Day 5 go mod / go fmt / go test / 常见项目结构 # Day 6 写一个简单 HTTP API 或命令行工具 # Day 7 复盘并阅读标准库与优秀开源项目
go build future
最好的入门方式不是继续背概念,而是用 Go 写一个能跑的 CLI 或 HTTP API,把格式化、测试、依赖管理和并发思维一起用起来。