入门指南:

GitHub 地址→https://github.com/unknwon/the-way-to-go_ZH_CN

《Go 入门指南》这本开源书籍是一位 Golang 的布道者(无闻)苦于当时国内没有比较好的 Go 语言书籍,而着手翻译的一本国外书籍《The Way to Go》。该书通过对官方的在线文档、名人博客、书籍、相关文章以及演讲的资料收集和整理,并结合我自身在软件工程、编程语言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术分类来进行讲解。

该书将从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来开发 Web 应用这些高级概念和技巧。

阅读地址→https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

从零开始学 Go Web 编程:

GitHub 地址→https://github.com/astaxie/build-web-application-with-golang

《Go Web 编程》这本开源书籍,从零开始手把手教你 Go 的环境安装和配置、基本语法再到 Go Web 开发的方方面面。可谓是一书在手,“天下”(Go Web)任我行。当然书写得再好,也是“师傅领进门,修行靠个人啊!“

阅读地址→https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/SUMMARY.md

Go从零实现步骤

用 Go 分别写一个:Web 框架、分布式缓存、ORM 框架、RPC 框架的实战教程。有些东西看懂了,不一定会用,会用了也不一定能自己搞出来。所以从零写一个框架,了解其中的细节,才能算上真正懂了吧。

7天用Go从零实现Web框架Gee教程

推荐先阅读 Go 语言简明教程,一篇文章了解Go的基本语法、并发编程,依赖管理等内容。

推荐 Go 语言笔试面试题,加深对 Go 语言的理解。

推荐 Go 语言高性能编程(项目地址),写出高性能的 Go 代码。

Go从零实现Web框架 - Gee

Gee 是一个模仿 gin 实现的 Web 框架,Go Gin简明教程可以快速入门。

Go从零实现分布式缓存 GeeCache

GeeCache 是一个模仿 groupcache 实现的分布式缓存系统

Go从零实现ORM框架 GeeORM

GeeORM 是一个模仿 gormxorm 的 ORM 框架

gorm 准备推出完全重写的 v2 版本(目前还在开发中),相对 gorm-v1 来说,xorm 的设计更容易理解,所以 geeorm 接口设计上主要参考了 xorm,一些细节实现上参考了 gorm。

Go从零实现RPC框架 GeeRPC

GeeRPC 是一个基于 net/rpc 开发的 RPC 框架 GeeRPC 是基于 Go 语言标准库 net/rpc 实现的,添加了协议交换、服务注册与发现、负载均衡等功能,代码约 1k。

WebAssembly 使用示例

具体的实践过程记录在 Go WebAssembly 简明教程

  • 示例一:你好世界 |Code
  • 示例二:注册函数 |Code
  • 示例三:操作 DOM |Code
  • 示例四:回调函数 |Code

网络框架 - Gee

Gee是一个类似杜松子酒的框架

  • 第 1 天 - http.处理程序接口基本代码
  • 第 2 天 - 设计灵活的上下文代码
  • 第 3 天 - 带有三棵树算法代码的路由器
  • 第 4 天 - 组控制代码
  • 第 5 天 - 中间件机制代码
  • 第 6 天 - 嵌入式模板支持代码
  • 第 7 天 - 恐慌恢复并使其健壮的代码

分布式缓存 - GeeCache

GeeCache是一个类似组缓存的分布式缓存

  • 第 1 天 - LRU(最近最少使用)缓存策略代码
  • 第 2 天 - 单机并发缓存代码
  • 第 3 天 - 启动 HTTP 服务器代码
  • 第 4 天 - 一致的哈希算法代码
  • 第 5 天 - 分布式节点代码之间的通信
  • 行程日 6 - 缓存细分和单次飞行 |Code
  • 第 7 天 - 使用 Protobuf 作为 RPC 数据交换类型 |Code

对象关系映射 - GeeORM

GeeORM是一个类似gormxorm的对象关系映射库

Xorm 的设计比 gorm-v1 更容易理解,因此主要设计引用了 xorm,一些详细的实现引用了 gorm-v1。

  • 第 1 天 - 数据库/sql 基础 |Code
  • 第 2 天 - 对象扫描映射 |Code
  • 第 3 天 - 插入和查询 |Code
  • 第 4 天 - 连锁、删除和更新 |Code
  • 第 5 天 - 支撑挂钩 |Code
  • 第 6 天 - 支持交易 |Code
  • 第 7 天 - 迁移数据库 |Code

RPC 框架 - GeeRPC

GeeRPC是一个类似网络/RPC的RPC框架

基于golang标准库,GeeRPC实现了更多的功能。例如,协议交换、服务注册和发现、负载平衡等。net/rpc

  • 第 1 天 - 服务器消息编解码器 |Code
  • 第 2 天 - 并发客户端 |Code
  • 第 3 天 - 服务注册 |Code
  • 第 4 天 - 超时处理 |Code
  • 第 5 天 - 支持 HTTP 协议 |Code
  • 第 6 天 - 负载平衡 |Code
  • 第 7 天 - 发现和登记 |Code

Golang WebAssembly 演示

学习之路

Go 开发者路线图

资源

  1. 先决条件
  2. Go
  3. SQL
  4. 通用开发技能
  5. 学习GIT,在GitHub上建立一些仓库,与其它人分享你的代码
  6. 了解 HTTP(S) 协议,request 方法(GET, POST, PUT, PATCH, DELETE, OPTIONS)
  7. 不要害怕使用Google,Google 搜索的力量
  8. 看一些和数据结构以及算法有关的书籍
  9. 学习关于认证的基础实现
  10. 面向对象原则等等
  11. 命令行工具
  12. cobra
  13. urfave/cli
  14. 网页框架 + 路由
  15. Echo
  16. Beego
  17. Gin
  18. Revel
  19. Chi
  20. 数据库
  21. 关系型
  22. 云数据库
  23. 搜索引擎
  24. NoSQL
  25. 对象关系映射框架
  26. Gorm
  27. Xorm
  28. 高速缓存
  29. GCache
  30. 分布式缓存
  31. 日志
  32. 日志框架
  33. 日志管理系统
  34. 分布式追踪
  35. 实时通信
  36. Socket.IO
  37. API 客户端
    1. REST
    2. Gentleman
    3. GRequests
    4. heimdall
    5. GraphQL
    6. gqlgen
    7. graphql-go
  38. 最好知道
  39. 测试
    1. 单元、行为和集成测试
    2. GoMock
    3. Testify
    4. GinkGo
    5. GoMega
    6. GoCheck
    7. GoDog
    8. GoConvey
    9. 端对端测试
    10. Selenium
    11. Endly
  40. 任务调度
  41. 微服务
    1. 消息代理
    2. RabbitMQ
    3. Apache Kafka
    4. ActiveMQ
    5. Azure Service Bus
    6. 构建事件驱动型服务
    7. Watermill
    8. Message-Bus
    9. 框架
    10. GoKit
    11. go-zero
    12. Micro
    13. rpcx
    14. RPC
    15. Protocol Buffers
    16. gRPC-Go
    17. gRPC-Gateway
    18. Twirp
  42. Go-模式

Go 高级编程

GitHub 地址→https://github.com/chai2010/advanced-go-programming-book

《Go 语言高级编程》作为针对有一定 Go 基础的进阶书籍,内容涵盖并发、GOC 编程、Go 汇编语言、RPC 实现、Web 框架实现、分布式系统等高阶主题。该书的附录也是一大亮点,收录了 Go 有趣的代码片段、Go 常见坑。要想 Golang 玩得溜,得在 Go 高级编程下功夫 [手动狗头]

在线阅读→https://chai2010.cn/advanced-go-programming-book/

星图:starcharts

GitHub 地址→https://github.com/caarlos0/starcharts

这个项目是通过可视化的方式展示 GitHub 上 star 的增长曲线,也就生成是“星图”。推荐这个项目主要是运行简单和直观的数据可视化,可以快速地感受到 Go 开源项目带来的便利。我第一次玩这个项目的时候不会 Go 语言,但是参考这个项目写一个 Python 版本的星图,所以我想已经入门 Go 的各位肯定也能看懂。

Python 版本的星图

有的小伙伴可能会说我没有开源项目、我的项目都没有 star 我学这个项目没用,我想了下确实是缺少些动力。如果抛开 GitHub 的 star 元素,还有一个适用更多场景的 Go 数据可视化项目:go-echarts。来吧,感受下数据的律动。

图片

GitHub 地址→https://github.com/go-echarts/go-echarts

Chat 下:gochat

GitHub 地址→https://github.com/LockGit/gochat

gochat 是纯 Go 实现的轻量级即时通讯系统。技术上各层之间通过 RPC 通讯,使用 Redis 作为消息存储与投递的载体,相对 Kafka 操作起来更加方便快捷。各层之间基于 etcd 服务发现,在扩容部署时将会方便很多。架构、目录结构清晰,文档详细。而且还提供了 Docker 一键构建,安装运行都十分方便。

图片

annie

GitHub 地址→https://github.com/iawia002/annie

Go 编写的下载快速、使用简单、程序纯净的视频下载工具。支持哔哩哔哩、YouTube 等视频网站。可作为前段时间被封禁:youtube-dl 的替代品(目前已重新上架),它真的很强大!先感受下 annie 带来的便利,可能就有兴趣去探究它的源码啦。

$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/

 Site:      哔哩哔哩 bilibili.com
 Title:     【2021拜年祭单品】相遇day by day
 Type:      video
 Stream:
     [default]  -------------------
     Quality:         高清 1080P60
     Size:            220.65 MiB (231363071 Bytes)
     # download with: annie -f default "URL"

 16.03 MiB / 220.65 MiB [==>----------------------------]   7.26% 9.65 MiB/s