目前市面上各种golang的学习资料实在不少,不过学习过一段时间以后发现有两个问题。一是每一个文章、站点都是介绍一个方面,缺乏一个整体上的视角。二是学习完了之后不练习的话,基本一周后就忘的差不多了。
所以我把我个人的学习、练习过程以此项目整理发布了出来。
- 用树形的方式进行尽量合理地组织,便于整体上把握
- 每一个知识点尽量配置go源代码,便于动手练习
该项目目前只更新了基础部分,日后会继续更新和完善。
- 安装
- 配置GOROOT、GOPATH
- GoLand使用以及其快捷键
-
语言基础:
-
数据类型
-
指针
-
代码组织
-
文本处理
-
并发操作
-
网络操作
-
编码解码
- encoding: 常见算法如 JSON、XML、Base64 等
- json
- encoding/json ->code
- json-iterator
- tidwall/gjson
- easyjson
- protobuf
-
cgo
-
性能分析
-
单元测试
-
标准库用法
- bytes: 字节操作
- context
- database: 数据库驱动和接口,包括mysql
- flag:命令行解析
- fmt: 格式化操作
- io:实现 I/O 原始访问接口及访问封装
- mysql: mysql数据库操作
- math: 数学库
- os: 操作系统平台不依赖平台操作封装
- sort: 排序接口
- strings: 字符串转换、解析及实用函数
- time: 时间接口
-
golang工具链
- go get命令: 一键获取代码、编译并安装
- go install命令: 编译并安装
- go module: 依赖管理
- go fmt命令: 格式化代码文件
- go imports:
- go build: 编译
- go run: 编译并运行
- go test: 单元测试
- go pprof命令: 性能分析
- 数据竞争
- 代码覆盖率
- 编译原理
- [golang之编译原理]
- [数组编译过程理解]
- [为什么数组常量下标编译时报错,而变量下标运行时panic]
- [对切片append超过其容量时会发生什么]
- [了解字符串拼接、转换的开销]
- [golang函数调用和c函数开销对比]
- [为什么make能同时支持map、slice和chan]
- [for range循环解惑]
- [GPM之阻塞的系统调用实勘]
- [Golang协程上的网络IO]
- 主流第三方库用法
- gorm
- cobra
- redigo
- go-cache
- viper
- gRPC
- 日志库
- 并发
- goroutine
- channel
- select
- sync包:WaitGroup、互斥锁、读写互斥锁、Once、并发安全Map
- 工程化与部署
- 编码规范
- 热升级
- 项目布局
- Make file
- Docker file
- 优雅地调试容器
- CI && CD
-- | -- |
---|
- https://golang.org/doc/code.html
- https://golang.org/doc/effective_go.html
- http://c.biancheng.net/golang/intro/
- awesome-go项目中文版 精选了一系列很棒的Go框架、库和软件。灵感来自于awesome-python
- Uber 内部在 github 开源的 的 Go 编程规范
- Dave Cheney 写的 《Go语言最佳实战》
- Go语言设计与实现(电子书) 侧重于内部实现分析
- begoo官方文档
- 如何优雅地写出Go代码