专栏导读

Go 语言,你真的学会了吗?

为什么是 Go?

传统的编程语言都存在一些通用的缺点:

  • 学习成本高:诸如 C++ 要理解作者思想,Java 要学习大量库;
  • 编译速度慢:代码的编写、预处理、编译与运行流程花费时间太长;
  • 无法使用现代计算机发展:现代计算机发展迅速,C、C++ 生态
  • 项目迭代周期短:996 已经成为常态,任务压的又压,在如何提高团队生产效率,又能保证项目质量两者之前权衡成了一个比较重要的问题。

所以急需一门语言改善以上问题,这时候的 Go 优势就很详尽了。

Go 语言的优势

Go 作为 Google 开源的编程语言,近些年来,除 Docker 本身就是 Go 写的,知乎、Bilibili 都纷纷迁移到 Go,面对中国的人口优势,Go 的特性优势就被发挥的很充分。

画板备份

如果你去上述公司面试,有 Go 基础,懂 Go 核心,面试通关是不是会更容易?

说回来,Go 语言的优势大抵有以下:

  • 如果有 C 语言的加持,可以轻松学会;
  • 部署简单,实现高并发很轻松,内存占用也非常省;
  • 代码简洁、格式清晰统一、方便协作与阅读;
  • 具备性能强劲但是开发效率不输给一些动态语言,适合编写一些瓶颈业务。

上手学习与使用 Go 语言概念少,入门简单,但是真的就简单的会了吗?

如何重学 Go 语言

“看完 Go 文档,输出完「Hello World 」,我的 Go 就入门了?”

当然不是,还有:并发与协程、基于消息传递的通信方式、丰富实用的内置数据类型、函数多返回值、defer 机制、reflect 反射、高性能 HTTP 服务、工程管理。等着你来学习。

脱离 Go 文档之外,学习 Go 会遇到哪些问题:

  1. 程序怎么理解一个变量?
  2. 编码过程中为什么使用常量?
  3. Go语言里有枚举类型么?
  4. Go语言引用类型和其他语言有什么不同?
  5. 同是流控制语句,switch 和 if 有什么不同?
  6. 在编码过程中写过 goto 语句么?
  7. Go 支持支持尾递归优化么?
  8. 如何判断两个函数变量相等?
  9. 匿名函数有性能问题吗?
  10. 使用闭包会导致什么性能问题?
  11. 什么是错误?和异常有什么区别?
  12. 是不是数组就一定能分配在栈上?
  13. 字符串怎么性能优化?
  14. 字典怎么性能优化?
  15. 字段对齐对结构体有什么影响?
  16. Go 语言怎么实现 OOP 的方法和接口?
  17. 接口调用有哪些性能问题?
  18. ……

有问题,也就对应有解决方案,上述问题应该怎么解决?

所以,与我一起来重学 Go 语言

我一直从事服务器后端系统开发快 10 年了,高并发分布式是互联网应用的基础,工作中先后使用过C#、Java、Go 等语言。

现在项目上的工作需要把平台迁移到 Go,从零开始构建基础设施框架,在基础设施框架上开发各种业务系统。我在迁移过程中逐步自研了一套功能完善的基础框架,同时也对语言的一些特性有了更深入的了解,于是便有了这个专栏。

这个专栏的目的是教你如何把一门语言学精通了,什么叫精通,就是该会的东西都会了,让读者对语言有更全面更深入的认识,让读者掌握怎么利用逆向方法推导某种细节带到其他语言学习中去,而不是仅仅是学一门,吃力一门,让你更好的应用在项目与面试中。

你可以把一门语言看成一个长期项目,通过这个长期项目来锻炼提升自己。比如 Go,从代码实现上,主要有类型系统设计,函数执行,内置的数据结构,对象系统设计,运行时,标准库,工具链等这些方面,但是这些方面仅仅看文档就能深入理解吗?

相比市面上的文章大多数属于帮助文档型,其目的就是介绍基本语法,使用 API。 要知道,技术日新月异,大多数初学者一直沉浸在学习各种各样的语言、框架中。学的广,但是学的不精,也无法抽出思想应用到其他语言,达到融会贯通。

这就要注意了,你可能是学习方法不对,没有一个人把你带到细节里面,细节是魔鬼,任何简单的背后必然隐藏复杂的逻辑。这也是我为什么要写这个专栏。

本专栏希望这个专栏能与你一起:

  • 抽丝剥茧,从 Go 背景知识到灵活使用,让你知其然知其所以然。
  • 一起去思考 Go 语言设计,为什么这样设计?怎么样设计?
  • 使用反汇编、编程范式推导 Go 核心原理;
  • 从架构思想层面解析 Go 语言每个细节;

最后,一起理解在官方文档中表达不清楚的知识点,助力项目与面试。

本专栏分为基础篇与进阶篇:

画板

基础篇
  • 第一部分:类型,包含类型存储、基础类型、引用类型、自定义类型等
  • 第二部分:表达式,包含流控制等
  • 第三部分:函数,包含函数执行、调用堆栈、参数及返回值、闭包等
  • 第四部分:数据,包含基础数据类型、常用数据结构等
  • 第五部分:对象,包含面向对象理论、方法、接口等
进阶篇
  • 第六部分:并发,进程、线程、协程、通道、同步等;
  • 第七部分:系统,内存管理、垃圾回收、调度、系统监控等;
  • 第八部分:标准库,io、bytes、context、net、db 等;
  • 第九部分:测试,单元测试、性能测试、代码覆盖率、性能监控等。

本课程重点从 Go 原理实现和思想深入浅出的讲解「基础篇」部分,希望能对你有所帮助。

你将获得什么

  • 掌握 Go 语言基础特性;
  • 学会从架构层面思考编程语言设计并应用在项目上。

作者介绍

李永京作者介绍图_750x400

适宜人群

  • Go 应用开发想转 Go 系统开发的开发人员;
  • 对 Go 语言底层原理实现感兴趣的开发人员;
  • 从事服务端架构设计的架构师、开发人员。

购买须知

  • 本专栏为图文内容,共计 79 篇。
  • 每周一、三、五更新,预计于 2019 年 12 月 30 日更新完毕。
  • 付费用户可享受文章永久阅读权限。
  • 付费用户可获取读者圈 PASS 权限,与讲师进一步互动。
  • 本专栏为虚拟产品,一经付费概不退款,敬请谅解。
  • 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。

订阅福利

  • 本专栏限时特价 49 元,11 月 27 日恢复至原价 79 元。
  • 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
  • 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。
  • 购买本专栏后,可加入读者群交流(入群方式可查看第 3 篇文末说明)。

参考

  • 《GO 笔记之为什么要学习 GO》
  • 《大道至简 — GO 语言最佳实践》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值