任何一门语言的出现是都是为了解决问题。
Go 语言就为解决 Google 团队在开发过程中遇到其他语言不能解决的问题或难以解决的问题而诞生。
而我们学习 GO 语言的原因,就是 GO 语言所解决的这些问题。
一、开发效率
我们知道动态语言或者解释性语言比如 PHP 与 Python 没有编译代码的过程,编写程序后可以快速查看结果,这样的语言开发效率非常之高,代价是动态语言没有静态语言的类型安全特性以及编译带来的静态化过程,所以为了保证项目稳定不得不编写大量的测试来避免运行时产生的 Bug。
这也是为什么金融系统这种对安全、稳定、效率全方位高要求的项目大多数都是用 Java 编写,而没有用 PHP 和 Python 来写。
但由于 Java 或 C++ 开发的项目稳定但是编译时间太长,编译一个大型 C++ 的项目所消耗的时间可以让开发者喝一杯咖啡了。
那 Go 语言怎么解决这个问题呢?
Go 做为一门静态语言使用更加智能的编译器,编译时只会关注被直接引用的库,而不是像 Java 和 C++ 那样需要遍历依赖链中所有的库。
因此 Go 的编译过程很快,大多只需要 1s,而不是等一杯咖啡的时间
二、并发
现代计算机都拥有多核特性,但是大部分编程语言在当初设计的时代都没有多核硬件场景,所以没有针对多核硬件资源进行设计。
当代为了充分利用硬件资源,这些语言需要编写大量的线程同步代码来利用多核特性,很容易导致错误。
而 Go 语言内置 Goroutine 天生支持高并发,并使用 Channel 这一种内置数据结构在不同的 Goroutine 中间通信。
从而不必考虑其他语言在并发修改用户数据这种业务场景下需要考虑复杂的同步锁问题保证数据有效性。
三、组合优于继承 (Composition Over Inheritance)
众多设计模式中有的 2 个最核心原则
Program to an interface, not an implementation 面向接口编程而不是实现
Favor object composition over class inheritance 当继承与组合都可以的时候尽量选择组合
Go 语言提供了灵活的、无继承的类型机制,支持面向对象思想但又避免了传统面向对象问题,Go 语言还具有独特的接口实现机制,允许用户对行为建模而不是对类型建模。
四、具有成为主流技术的特征
背靠大公司 -- Google Facebook
有杀手级应用 -- Docker K8s
有强大的社区
所以如果你早已对 Go 产生兴趣,那么就在 2020 年好好学习 Golang 吧!
五、如何怎么学习呢?
根据研究表明,通常视频学习对知识的掌握率比是阅读书本学习高 20% 左右,特别是对于跟着视频一遍看一遍敲代码的实战教程。
同学们应该在学习的初期多看实战,然后在有一定的经验后再去找经典的书籍阅读。
下面给同学推荐一些学习资料
书籍: 《Go程序设计语言》
https://book.douban.com/subject/27044219/
视频:《Gin+Vue前后端项目分离实战 - OceanLearn》
https://www.bilibili.com/video/av92519169
有疑问加站长微信联系(非本文作者)