programmer roadmap

This commit is contained in:
Xuezhe Jin
2021-11-24 14:07:36 +08:00
committed by İnanç Gümüş
parent be204577a5
commit ed9b69d3fa

View File

@@ -0,0 +1,145 @@
# 学习路线
大家好!
如果您是有经验的开发者, 您只需要跟着课程学习50个小节即可完整的课程是180节。
本课程从Go基础内容开始,逐渐递进。我们希望让尽量多的Go学习者可以轻松入门。
如果您觉得某些小节的内容您已掌握,可以跳过这部分直接做课后题。当然,您也可以
回过头来复习本小节。
## 课程
* **写下第一个Go程序**
* 请看所有的课程.
* Go文档是什么?
* "写一个库"之前的准备课程
* **掌握Go的类型系统**
* 每个Go类型都有一个零值
* blank标识符是什么?
* 让我们定义一组变量!
* 类型引用是什么?
* 怎样声明短变量?
* 为何不能在包中声明短变量?
* 重复声明是什么?
* 什么情况可以适合使用短变量声明?
* 学习从命令行获取输入和切片
* 学习 os.Args 基本用法
* 使用 os.Args 实现欢迎新人
* 使用Printf 进行格式化输出的准备工作
* 将摄氏度转换为华氏度
* 将换英尺转换为米
* 原始字符串是什么?
* 怎样获得字符串长度?
* 什么是预定义的类型之后的课程.
* 理解为定义类型的常量的后续课程, 章节的结束
* 学习常量的规则
* 复习: 常量
* 未定义类型的常量是怎样在钩子下运行的?
* 默认类型是什么?
* 例子: time.Duration
* iota 是什么?
* 推荐的命名法
* **控制Go的错误处理流程**
* 观看所有 "认证通过: 创建密码保护程序"之前的课程
* 观看所有 "理解Go的错误处理"之前的课程
* case 条件语句中使用多个值
* 回滚语句是怎样工作的?
* 解决方案: 一天的部分
* 复习: Switch 语句
* 怎样继续一个循环? (+奖励: 调试)
* 创建一个乘法表
* 怎样循环一个切片
* 范围: 轻巧地统计方法!
* **项目: 针对初学者**
* 请观看完整课程.
* **余下章节**
* 到目前为止Go的基础部分已经结束。您可以观看余下的所有课程余下课程覆盖了Go的高级特性.
## That's all! Enjoy! 🤩
---
# 奖励: 我们为什么要学Go?
**总结:** Go犹如Python和Javascript一样简单,C/C++一样快.使用Go作为工作语言会比C/C++更有趣。我们既可以使用Go的low-level API也可以使用high-level API。
## Go能用在哪些场景?
Go在互联网公司经常被应用,例如: Google, Facebook, Twitter, Uber, Apple, Dropbox, Soundcloud, Medium, Mozilla Firefox, Github, Docker, Kubernetes, 和 Heroku.
**Go 非常适合:** 跨平台命令行工具, 分布式网络系统, 微服务 和 Serverless, 网站APIs, 数据库引擎, 大数据处理流水线, 嵌入式开发, 等等.
**Go 不是特别适合 (但是可以使用):** 桌面应用, 操作系统, 内核驱动, 游戏开发, etc.
## Go的设计者是谁
Go的设计者在工业界非常有影响力 他们是:
* Unix: Ken Thompson
* UTF-8, Plan 9: Rob Pike
* Hotspot JVM (Java Virtual Machine): Robert Griesemer
## Go的市场薪资待遇
* [Go 薪资](https://www.payscale.com/research/US/Skill=Go_(Golang)_Programming_Language/Salary)
## [Go的前8年](https://blog.golang.org/8years):
> 如今, **每个云厂商的关键基础组件都可以看到Go语言的影子** 包括 Google Cloud, AWS, Microsoft Azure, Heroku, 等等. Go 是云厂商的重要部分.例如,Alibaba, Cloudflare, 和 Dropbox 都在使用Go. Go也是公共基础设施的重要组成部分。例如, Kubernetes, Cloud Foundry, Openshift, NATS, Docker, Istio, Etcd, Consul, Juju, 等都在使用Go. Companies are increasingly choosing Go,云基础设施方案选型中越来越多的公司开始采用Go.
## 我们可以用Go做哪些事情?
* [网络驱动程序](https://www.net.in.tum.de/fileadmin/bibtex/publications/theses/2018-ixy-go.pdf) (_与C驱动相比只有10%的性能差距_)
* [Google gVisor](https://cloud.google.com/blog/products/gcp/open-sourcing-gvisor-a-sandboxed-container-runtime) (_Go实现用户空间内核_)
* [多平台任天堂模拟器](https://humpheh.github.io/goboy/)
* [Docker: 容器](https://github.com/moby/moby)
* [Kubernetes: 容器编排管理](https://github.com/kubernetes/kubernetes)
* 虚拟机镜像处理工具
* 聊天服务器
* RUM beacon收集器
* 时间序列数据库引擎, 客户端, 命令行工具, 等等.
* Map-reduce依赖包
* 支持动态内容重写,图片放大缩放缓存Lua事件处理器功能的反向代理集群
* 基于地理位置的反向代理CDN节点
* 健康管理应用(时间处理&点对点报告)
* Go DNS 服务器
* 接入MySQL的API后台服务
* Linux 进程处理工具
* 作为反向代理隐藏后台服务器.
* HTML -> PDF 转换器.
* 短链接服务 类似 tinyurl.com 和 goo.gl
* SMS 消息服务.
* 信用卡支付网关
* JSON Web Token工具包
* 动态图像处理服务
* 第三方内容渲染工作流(十分庞大的项目)
* lxc 容器部署
* 自动化测试框架
参考: [This Reddit post](https://www.reddit.com/r/golang/comments/5nac2b/what_have_you_used_go_for_in_your_professional/).
## 更多Go相关请参考:
* [关于 Go: 概览](https://blog.learngoprogramming.com/about-go-language-an-overview-f0bee143597c)
* [为什么要学习Go?](https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65)
* [云基础设施的新兴语言](https://redmonk.com/dberkholz/2014/03/18/go-the-emerging-language-of-cloud-infrastructure/)
* [使用Go的公司](https://github.com/golang/go/wiki/GoUsers)
* [Go的8年](https://blog.golang.org/8years)
* [Twitter: 使用Go一天处理50 亿会话](https://blog.twitter.com/engineering/en_us/a/2015/handling-five-billion-sessions-a-day-in-real-time.html)
* [C++工程师眼里的Go](https://www.murrayc.com/permalink/2017/06/26/a-c-developer-looks-at-go-the-programming-language-part-1-simple-features/)
<div style="page-break-after: always;"></div>
> 更多内容: [https://blog.learngoprogramming.com](https://blog.learngoprogramming.com)
>
> Copyright © 2019 Inanc Gumus
>
> 学习Go编程课程
>
> [点击查看认证许可.](https://creativecommons.org/licenses/by-nc-sa/4.0/)