go-tutorial
go-tutorial copied to clipboard
Go learning materials,涵盖基础、中级和高级教程
Learning notes for golang
如果发现了本项目里的问题或者想了解本项目里还没涉及到的go语言技术栈,欢迎提交issue。
如果觉得本项目不错,欢迎给个Star。
基础篇
-
lesson1: Go程序结构
-
lesson2: 数据类型:数字,字符串,bool
-
lesson3: 变量类型定义:全局变量,局部变量,多变量,零值
-
lesson4: 常量和枚举
-
lesson5: 运算操作符
-
lesson6: 控制语句if/switch
-
lesson7: 循环语句for/goto/break/continue
-
lesson8: 函数,闭包和方法
-
lesson9: 变量作用域
-
lesson10: 数组:一维数组和多维数组
-
lesson11: 指针pointer
-
lesson12: 结构体struct
-
lesson13: 切片Slice
-
lesson14: range迭代
-
lesson15: map集合
-
lesson16: 递归函数
-
lesson17: 类型转换
-
lesson18: 接口interface
-
lesson19: 协程goroutine和管道channel
-
lesson20: defer语义
-
lesson21: 并发编程之sync.WaitGroup
-
lesson22: 并发编程之sync.Once
-
lesson23: 并发编程之sync.Mutex和sync.RWMutex
-
lesson24: 并发编程之sync.Cond
-
lesson25: 并发编程之sync.Map
-
lesson26: 并发编程之原子操作sync/atomic
-
lesson27: 包Package和模块Module
-
lesson28: panic, recover运行期错误处理
-
lesson29: select语义
-
lesson30: go单元测试
-
lesson31: go性能测试
-
lesson32: go模糊测试
进阶篇
-
常用关键字
- 被defer的函数一定会执行么?
- new和make的使用区别和最佳实践是什么?
- receive-only channel和send-only channel的争议
-
语言基础
- Go有引用变量和引用传递么?map,channel和slice作为函数参数是引用传递么?
- 一文读懂Go匿名结构体的使用场景
- Go语言中fmt.Println(true)的结果一定是true么?
- Go语言中命名函数参数和命名函数返回值的注意事项
-
泛型
- 泛型:Go泛型入门官方教程
- 泛型:一文读懂Go泛型设计和使用场景
- 泛型:Go 1.18正式版本将从标准库中移除constraints包
- 泛型:什么场景应该使用泛型
-
Fuzzing
- Fuzzing: Go Fuzzing入门官方教程
- Fuzzing: 一文读懂Go Fuzzing使用和原理
-
Workspace mode工作区模式
- Go 1.18:工作区模式workspace mode简介
- Go 1.18:工作区模式最佳实践
-
语言规范
-
Go开发中的常见错误
- 第1篇:go未知枚举值
- 第2篇:go benchmark性能测试的坑
- 第3篇:go指针的性能问题和内存逃逸
- 第4篇:for/switch和for/select做break操作退出的注意事项
- 第5篇:go语言Error管理
- 第6篇:slice初始化常犯的错误
- 第7篇:并发编程里的Context管理
- 第8篇:不使用-race选项做并发竞争检测
-
高性能Go
-
Go版本演进
- Go 1.19要来了,看看都有哪些变化:第1篇
- Go 1.19要来了,看看都有哪些变化:第2篇
- Go 1.19要来了,看看都有哪些变化:第3篇
- Go 1.19要来了,看看都有哪些变化:第4篇
Go Quiz
-
Go Quiz: 从Go面试题看slice的底层原理和注意事项
-
Go Quiz: 从Go面试题搞懂slice range遍历的坑
-
Go Quiz: 从Go面试题看channel的注意事项
-
Go Quiz: 从Go面试题看channel在select场景下的注意事项
-
Go Quiz: 从Go面试题看分号规则和switch的注意事项
-
Go Quiz: 从Go面试题看defer语义的底层原理和注意事项第1篇
-
Go Quiz: 从Go面试题看defer的注意事项第2篇
-
Go Quiz: 从Go面试题看defer的注意事项第3篇
-
Go Quiz: Google工程师的Go语言题目
-
Go Quiz: 从Go面试题看panic注意事项第1篇
-
Go Quiz: 从Go面试题看函数命名返回值的注意事项
-
Go Quiz: 从Go面试题看锁的注意事项
-
Go Quiz: 从Go面试题看变量的零值和初始化赋值的注意事项
-
Go Quiz: 从Go面试题看数值类型的自动推导
Go标准库
-
Go标准库之log使用详解
-
Go标准库之cmd命令使用详解
实战篇
代码规范
- Go语言代码规范
- Practical Go中文版本
Web框架
Gin
- 当前流行的Go web框架比较以及Gin介绍
- Gin源码结构解析
RPC
gRPC
- gRPC入门指引
- gRPC-Go入门教程
Databases
MySQL
- Tutorial of go-sql-driver/mysql
Redis
- Tutorial of go-redis/redis
Docker/K8s
Document Tools
Swagger
- gin-swagger常见问题
CI/CD
- Jenkins教程01:安装部署
外文翻译
-
官方博文:Go开发者调研方式改变了
-
官方博文:什么场景应该使用泛型
-
官方博文:Go工作区模式最佳实践
-
官方博文:Go 1.18发布啦!
-
官方教程:Go fuzzing模糊测试
-
官方教程:Go泛型入门
-
官方博文:Go 1.18 Beta 2发布
-
官方博文:Go官方推出了Go 1.18的2个新教程
-
官方博文:支持泛型的Go 1.18 Beta 1版本正式发布
-
官方博文:Go开源12周年
Go环境和工具
-
GitHub上的项目go get连不上怎么办?
-
GoLand常用快捷键
-
Mac的shell切换、环境变量设置以及软件安装问题
-
Go testing缓存导致测试没执行的问题
-
go install安装的不同Go版本的可执行程序和源码存放在哪里
-
Mac系统查看Go开发相关的系统设置
Go Book
- The Go Programming Language-Go语言圣经
- Go语言高级编程-chai2010.gitbooks.io
- Go语言设计与实现-draveness.me
- Go设计模式-Tamer Tas@google
- 深入解析Go-tiancaiamao.gitbooks.io
- 码农桃花源-qcrao91.gitbook.io
- Go语言高性能编程-geektutu
- Go Under The Hood-golang.design
- 英文Go书籍list
Go Blog
- Jincheng's Blog
- Russ Cox-Go团队负责人
- Go Documentation
- Golang GitHub Wiki
- Go By Example
- Golang By Example
- CS Professor Nilsson from KTH
- John Arundel
- Dave Cheney
- Jaana Dogan-Pricipal Engineer at AWS
- go101.org
- Valentin Deleplace-Google Engineer
- Jay Conrod-Ex Google Go Team Member
- Medium: A Journey with Go
- Teiva Harsanyi-100 Go Mistakes author
- Carl M. Johnson.net-Tech Director of Spotlight PA
- Alex Edwards-A full stack Web Developer
- golang.design
- Amit Saha-Atlassian Engineer
- Paschalis Tsilias-Grafana Engineer
- liwenzhou-李文周
- TalkGo发起人-杨文
- smallest-rpcx作者
- ChangkunOu-欧长坤
- chai2010-柴树杉
- cch123-曹春晖
- halfrost-Dezhi Yu
- draveness-左书祺
- unknwon-无闻
- strikefreedom-Andy Pan
- qcrao-码农桃花源
- geektutu-极客兔兔
- topgoer.com
- topgoer.cn
- 涛叔-taoshu.in
- jianyu chen
- Zhiyun Luo-Tencent IEG Developer
Go Video
YouTube
Go Community
- GoCN: https://github.com/gocn/opentalk
- Go夜读:https://github.com/talkgo/night
Go News
- https://go.dev/blog/
- https://twitter.com/_rsc
- https://twitter.com/rob_pike
- https://twitter.com/golang
- https://twitter.com/golangweekly
- https://twitter.com/GolangTrends
微信公众号
-
coding进阶:分享Go语言入门、中级到高级教程,以及微服务、云原生架构
