- 相关书籍
- Learning Go
- Go Programming Language
- 搭建本地的 Go 开发环境
- 安装 Go SDK
- 配置 Neovim + gopls
- dlv 调试
dlv run main.go
- 掌握 Go 语言基础语法
- 变量
- 数据类型
- 运算符
- 控制结构
- 函数
- 学习 Go 的包管理和模块化 (go mod)
- 理解错误处理 (error 和 panic/recover)
- 掌握并发编程基础
- goroutine
- channel
- Context
- Mutex
- WaitGroup
- select
- 理解面向接口编程 (interface)
- 学习 Go 的测试框架 (testing)
- 熟悉 Go 标准库常用包
- fmt
- os
- io
- strings
- strconv
- time
- 泛型
- 源码阅读
-
fmt
包:了解格式化输出的实现 -
io
包:了解输入输出的抽象
-
- 常见错误:
- 掌握网络编程基础
- TCP/IP 协议
- HTTP 协议
- 学习 Go 网络编程
- net 包
- http 包
- 选择 Web 框架
- gin
- gin-contrib: 提供各种常用的中间件,比如用于处理 CORS、JWT 认证等。
- air 可以在检测到源码改动后,重新构建运行程序。
air init
air
- echo
- mux
- 理解路由、中间件、请求处理、响应处理
- 学习 JSON 处理 (encoding/json)
- 学习 HTML 模板引擎 (html/template)
- 理解 RESTful API 设计原则
- 源码阅读
-
net/http
包:理解 HTTP 服务器如何工作 - 选择的网络框架的源码
-
- 编写简单的 HTTP 服务,熟悉 Web 开发流程
- 学习 API 文档编写 (例如 Swagger)
- 掌握 SQL 基础
- CRUD
- JOIN
- 索引
- 学习关系型数据库或 NoSQL 数据库
- MySQL
- Redis
- PostgreSQL
- MongoDB
- 理解数据库连接池
- 学习 ORM 框架
- gorm
// 可以打开 gorm 底层执行的 SQL 语句,便于理解 GORM 行为。 db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), })
- xorm
- 学习数据库迁移
- 库使用
-
database/sql
(Go 标准库) -
go-redis/redis/v8
(Redis 客户端)
-
- 源码阅读
- ORM 框架的源码
-
database/sql
包
- 选择一个数据库,并尝试连接和操作
- 掌握单元测试和集成测试
- 理解依赖注入 (DI)
- 学习 Docker 和 Docker Compose
- 理解 CI/CD (GitHub Actions, Jenkins)
- 学习微服务架构概念
- 理解 API 网关、服务发现和负载均衡
- 学习消息队列
- RabbitMQ
- Kafka
- 库使用
-
testify/assert
- 选择一个 API 网关/服务发现框架
-
- 编写简单的微服务,学习微服务设计的实践
- 尝试使用 Docker 部署你的应用
- 深入学习 Go 语言的内存模型和并发机制
- 学习性能优化技巧
- 学习设计模式
- 理解缓存、限流、熔断等技术
- 库使用
-
uber-go/fx
(依赖注入) -
prometheus/client_golang
(监控)
-
- 源码阅读
- Go Runtime 的源码 (调度器、垃圾回收等)
- 关注 Go 社区的最新动态,参与开源项目
- 不断学习新技术和新工具
- Viper: 一个强大的配置管理库,支持多种配置文件格式(如 JSON、YAML、TOML 等)。
- Zap: 一个高性能的日志库,适合生产环境使用。
- JWT: 使用 dgrijalva/jwt-go 库来处理 JWT(JSON Web Token)。
- Swagger: 使用 swaggo/swag 生成 API 文档。
- Testify: 一个强大的测试库,提供了断言、mock 等功能。
- RabbitMQ: 使用 streadway/amqp 库来操作 RabbitMQ。