我学 Go + Rust,但建议你先掌握 Go
2021-02-22 09:35:00 Author: mp.weixin.qq.com(查看原文) 阅读量:67 收藏

大家好,我是 polarisxu。
这段时间我在学习 Rust,有人以为我放弃了 Go 阵营。其实不是的,相反,Go 一直是我的最爱。之所有学习 Rust,我之前文章也说了,这里补充一点,学习 Rust,也因为我对 Go 有一定掌握了,我想通过学习另外一门不一样的语言来更好的提升自己,说不定能更好的理解 Go。所以,如果你要学习多门语言,我建议你先掌握 Go 语言,即兼顾深和多。
为什么?
近几年,关于 Go 与 Java 还有 c 的对比和讨论愈演愈烈,但不可否认的是,在十年多的时间里,Go 语言发展势头强劲,凭借其简洁、高效的特性,在竞争激烈的编程语言市场中占据了一席之地。
Google、腾讯、阿里等大公司纷纷选择使用 Go 语言来开发服务应用项目。Go 的应用范围一直在扩大,微服务,区块链和云计算,哪里都有用Go写的重量级项目,docker/kubernetes生态圈,几百/千万行代码,基本统治了云原生应用市场。目前大热的区块链,以太坊的 geth,比特币的 btcd,闪电网络的 lnd,都是 Go 语言开发。
基于此,Go 语言也越来越受欢迎,Hackearth 对来自 76 个国家和地区的16000 余名开发者进行调查的结果显示,Go 语言是 2020 年最受欢迎的编程语言。32% 的有经验开发者表示他们想学习 Go 语言。
如果你是一名 PHP,或者 NET 工程师,那我建议你从今天开始,果断利用业务时间学习下 Go 语言,跟上时代的潮流走把握住这波语言红利。如果你是一名相对成熟的 Java 工程师,我同样也建议你考虑下 Go 语言。
因为在一个人都可以的情况,你可以在多种语言里都可以,做得很好,这个毫无疑问。但是如果说来了一波趋势,能抓住的话,等于对来说是一个加速剂。目前Go 语言就处于这样一个不错的时代中。
其实,现在很多人已经开始如火如荼的学习 Go 语言了,可能在你刚刚换到这门语言的时候,你会发现之前你之前代码的那些问题全都没有了,感觉前途一片美好。遗憾的是,可能这是因为你仅仅才开始写了几个模块,还没有进入维护期。
事实是如果你没有深入的去钻研软件工程的规律和技术,没有深入的了解 Go 语言的独有特色,理解 Go 语言的设计哲学,建立一套专属的使用方法论,那么是很难通过换一门新语言就解决所有的问题的。
为了帮助你更好的掌握 Go 语言,在这里我一定要向你推荐由极客时间出品的 Go 进阶训练营这个课程的设计对标字节跳动 2-2 级职位模型,目标是让你在 3 个月时间内,快速掌握、吃透 Go 语言,并胜任一线互联网公司的高级或者资深 Golang 工程师等职位。

毛剑是谁?

毛剑,资深Go 工程师,目前在一家大型互联网视频内容公司担任资深总监和技术专家的职位。
在这里,毛剑参与了大型巨石架构到微服务的完整转型,他们使用 Go 语言作为主要的开发语言,构建了微服务的框架,同时,围绕分布式服务的可用性和数据一致性进行了大量的设计,并结合开源生态补齐了 Go 在微服务可视化上的功能。在演进架构的同时,他们还使用 Go 语言开发了配套的中间件,比如:消息队列、缓存代理、对象存储等等。
在 DevOps 领域,毛也使用 Go 语言做了大量的实践,结合 GitLab、Bazel、Kubernetes Prow 实现了完整的 CI/CD Pipeline,包括分布式增量编译、可靠的持续构建和发布系统,以及在线运行时平台(PaaS)等系统。
这十多年来,毛剑主要专注于服务端研发以及高性能、高可用的系统架构设计这些领域,对 Go 语言算得上是相当熟悉,毛剑开源的行业内比较有影响力的 Go 项目有:goim 分布式 IM 长连接广播服务、bfs 分布式小文件存储以及 Kratos Go 微服务框架。
毛剑是忠实的 Go 语言粉丝,也是一名 Go 语言老手,毛剑曾在 GitHub 上开源了几个基于 Go 语言的项目,如果你想了解毛剑的技术实力,可以点进去看看,毕竟,Talk is cheap,Show you the code。毛剑的 GitHub 主页:https://github.com/Terry-Mao
作为 Go 语言的布道师,毛剑也经常参加和 Go 有关的社区分享和演讲,包括 QCon、ArchSummit、Gopher China,GITC 等等这些业界知名的会议。

课程内容以及设计思路是什么?

整个训练营的内容,可以分为三大模块,先是 Go 语言编程实践、再到工程实践、最后是架构实践。
每个模块下面又可以分为 4 到 5 个子模块,当然,每个子模块又会细分出篇幅不等的更小的模块,总体算下来,差不多会有四五十个细分模块。
先说第一个大模块,Go 语言编程实践,毛剑会先从语言本身来讲 Runtime 的原理,包括 Goroutine、Channel 和 GC 等等,只有了解了这几个最关键的 Go 语言特性,才能让毛剑们更好地开展,如:并发编程、网络编程以及异常处理等这些子模块。
讲完 Go 语言本身的重点和难点之后,毛剑会开始讲 Go 语言的工程化实践,工程化意味着需要大规模落地到业务开发上,好的项目规范也更利于长期的迭代。这里面呢就包括如何设计项目结构,如何进行 API 设计和包设计,还有配置文件和单元测试等等工程化环节需要解决的重点问题。
最后一个大模块,就是架构设计了,毛剑会讲到当前最流行的分布式架构和微服务架构,当然,也少不了相关的中间件的讲解。
毛剑从 Go 语言实践到工程实践,最后到一个完整的大型分布式系统的实践,由浅到深,从语言到工程,从工程到架构,每个子模块毛剑都会结合毛剑这近 10 年的项目经验和积累来进行案例讲解,而不仅仅是单纯讲述理论知识。因为从实践中出理论,从理论践行实践,一直是毛剑学习成长的模式。

免费领取毛剑精选学习资料

扫码添加运营小姐姐,可以了解更多课程详情。
同时毛剑们还准备了一些见面礼,大家可以免费领取,里面有:
  • 毛剑精选 Go 预习资料
  • Golang 高清技术图谱
  • Linux 基础知识体系图
  • 100+ 大厂软件开发案例
可以帮助你建立完整的知识体系,规划具体的学习路线,同时夯实你的 Linux 基础;还可获得阿里、美团等一线互联网公司独家案例拆解。
扫码回复【xu】免费领取 Go 技术图谱等资料👆

文章来源: http://mp.weixin.qq.com/s?__biz=MzAxNzY0NDE3NA==&mid=2247486152&idx=1&sn=60463654df7cd31a5f9091469143e1a2&chksm=9be32529ac94ac3f972a8baffb1cf4ed3610b04baa7f1c6ce542b322bbbf1d389e32b51ef588#rd
如有侵权请联系:admin#unsafe.sh