给 Go 语言学习者的三点建议
Golang
被称为 云时代的编程语言
,周围越来越多的人开始接触 Golang
。本人从事开发已近6年,写了3年时间的 Golang
的服务端和中间件的相关程序,也面试了不少面向 Golang
的开发者,有些话想和大家分享下。总结起来,有以下三点建议:
打好系统基础
很多开发者只是为了写 Go
而写代码,很快就会遇到技术上的瓶颈,就找各类 框架
或 开源库
来解决问题,解决之后又抛到脑后。一旦技术有变,又疲于搜索他人的解决方案。
我个人认为, Golang
是一门很 高层
的语言。这里说的 高层
,是指其 API 封装了系统基础
,尤其是以下三块:
- 操作系统
- 网络
- 算法
对应地举三个面试时的问题:
- Go 语言是怎么实现跨平台的?
- Go 里怎么处理 http 长连接?
- 你了解 Go 里的 map 是基于什么算法结构的?
有不少面试者,认为掌握这些知识没有必要,搜索一下就知道了(前期我也是这么认为的)。但随着工作经验地积累,越发感觉这些系统级知识的重要性。了解底层,才能写出最合适的实现方法。
再掌握一门相对底层的开发语言
这里,我个人比较推荐 C/C++
和 Java
,是真正意义上的 工业级语言
,已大规模地应用。
其中,C/C++
偏向于操作系统底层(Unix/Linux),会让我们对 系统底层原理与资源分配
有更好地了解;而 Java
会让你了解 面向对象
的强大,也是实践 各类算法
的很好选择。
很多开发者将自己闭塞于 Go 语言的小圈子里,遵循公司或老员工的规则来写代码。本质上来说, Golang
是非常灵活的,所谓的 Best Practice
因人而异。盲目遵循他人的规则,很容易抑制了个人的思考。这时,学一门工业级的语言,他山之石,可以攻玉
。
持续从一手资料里学习
Golang
的最大优势,在于它能高效地进行编程、快速地实现需求。那么,这就令开发者节省了大量时间。如果这些时间花在学习上,那么就会不断提升个人能力,也就有更多的空闲时间。
有不少人跟我反馈,找不到好的学习资源,效率相对较低。这里提一下,Golang
起源于国外,大部分优秀资源都是英文的;国内虽然有翻译,但水平因人而异,很容易在 知识传播
中造成误解。鉴于写的代码本身就是英文,建议有志提升代码能力的朋友,还是需要了解一定的 程序员英语
。
这里,提供三个样例链接:
共同进步
最近互联网行业裁员风波迭起,个人觉得,这是行业开始从 劳动密集型
过渡到 技术密集型
的公司了。如何保持自己的 技术竞争力
,是一个值得每个从业者深思的事情。
有疑问加站长微信联系(非本文作者)