2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语言来取代C++, 这就是Golang。
由于出身名门,Go在诞生之初就吸引了大批开发者的关注。诞生十年以来,已经涌出了很多基于 Go 的应用。就在不多久之前,知乎也舍弃了 Python,转 用 Go 重构推荐系统。
对于一门只有十年历史的新语言,Go的发展势头相当迅猛,容器界的扛把子 Docker 就是用 Go 写的,目前国外的Google,AWS,Youtube,Soundcloud,Mozilla等公司都有使用Go语言,国内的阿里云、今日头条、滴滴、七牛云等也都在大量使用Go语言开发云计算产品, 业界甚至一度看好 Go 语言有取代 Java 王者地位的潜力。
近日,HackerRank在社区发起了 程序员技能调查,来自 100 多个国家、超过 70000 名开发者参与其中。调查结果显示,2019 年,程序员最想学习的编程语言 Top 3 分别是 Go、Kotlin 和 Python,其中 Go 以 37.2% 的比例排在首位。
据Stack Overflow的调查,在全球范围内,使用Clojure、F# 和 Go 语言的程序员薪酬最高,薪酬中位数超过70000美元。而占比例最大的 Java 和 C 语言开发者薪酬较低,在所有语言中垫底。
面对c位出道的 Go 语言,你还不赶快上手,提前学习一下。
1、学习路线 & 基础知识一键获取
入门Go语言的同学基础不一,具体可以分成下面几类。
零基础的同学:可能正准备入行或对编程刚开始感兴趣,对计算机、操作系统和网络方面的知识不太了解。
无编程经验或者编程经验较少的同学:可能正在从事其他的技术相关工作,也许可以熟练编写脚本,但是对程序设计的通用知识和技巧还不太了解。
有其他语言编程经验的同学:可能已经是程序员或软件工程师,可以用其他编程语言熟练编写程序,但对Go语言还不太了解。
有一定Go语言编程经验的同学:已有 Go 语言编程基础,写过一些 Go 语言程序,急需进阶却看不清途径。
2、进阶高级知识点逐个击破
除了基础知识之外,如果你想要进阶高级Go语言工程师,还需要通关以下的知识点。
数据类型方面:
基于底层数组的切片;
用来传递数据的通道;
作为一等类型的函数;
可实现面向对象的结构体;
能无侵入实现的接口。
在语法方面:
异步编程神器go语句;
函数的最后关卡defer语句;
可做类型判断的switch语句;
多通道操作利器select语句;
非常有特色的异常处理函数panic和recover。
Go语言自带的程序测试套件,相关的概念和工具包括:
独立的测试源码文件;
三种功用不同的测试函数;
专用的testing代码包;
以及功能强大的go test命令。
Go语言的同步工具:
经典的互斥锁、读写锁、条件变量和原子操作;
Go语言特有的一些数据类型,单次执行小助手 sync.Once、临时对象池 sync.Pool、sync.WaitGroup 和 context.Context;
并发安全字典sync.Map。
如果你理解了上述知识点,就掌握了Go语言编程的精髓。在这之后,再研读 Go 语言标准库和优秀的第三方库,就会事半功倍;使用 Go 语言编写软件时,就会游刃有余。