我本是一个默默无闻,兢兢业业的Java开发,但是在上一次跳槽过后加入了现在公司的架构组。在这个云原生快速发展,golang迅速崛起的年代,怎么可能会有搞架构的还不懂golang啊!
于是痛定思痛的我准备开始学习golang,文中也分享了我的学习路线和一些学习书籍,可以拿到完整大纲和资料来进行深入学习。
新语言的学习嘛总是要从语法和基础特性开始的,于是去Github和各大网站上找了一些学习资料开始学习基础的语法。
实际上对于大部分的语法来说我都是浅尝辄止,只是在goroutine,channel等golang的特色功能上稍微花了点时间了解了一下他的能力和使用姿势。但是这显然是不够的,简单的了解在后续阅读源代码时会有帮助,但是真的自己上手写可能还是需要更加深入的了解。
学习任何一门语言,都需要了解和学习好基础,至于基于该语言的各种框架,对于我们来说,都是工具。打牢基础,并不是指只熟记语言的关键词和语法,更重要的是我们需要知道它是什么,为什么要这么用,它包括程序思维逻辑和实现方法。
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
Go的语法接近C语言,但对于变量的声明(英语:type declaration)有所不同。Go支持垃圾回收功能。通过goroutine和通道等并行构造可以建造线程池和管道等。
与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收功能、接口等特性的语言级支持。
不同于Java,Go原生提供了关联数组(也称为哈希表(Hashes)或字典(Dictionaries))。
网上一个陈述说 Go 语言是“C 语言的理念加 Python 的姿态”,个人非常认同这个观点。从我的角度看,就是 Go 语言找到了一个开发效率和执行效率的最佳平衡点。这点非常类似于 Java,就是将效率和开发很好的结合在一起了。
在我熟悉(了解)的语言中,C、C++ 是执行效率最高的语言了,而 Python、PHP、JavaScript 执行效率就相对低些。但是从开发实现业务逻辑的角度,PHP、Python、JavaScript 确实很快的,他们内置了大量的常见数据结构,函数方法。
C(C++) 语言的特征是要尽量保持语言的小巧,不屏蔽底层且底层友好,关注语言的执行效率和性能。而 Python(PHP,JavaScript) 的特征是用尽量少的代码完成尽量多的事,尽量不要关注底层 OS,程序员的精力尽量在业务逻辑实现上。golang的就是尽量平衡。
总的来说就是,对比执行效率优先的语言,golang开发效率更高;对比开发效率优先的语言,golang执行效率更高,它在执行效率和开发效率上做到了平衡。
golang的语法简单,开发效率高,并不代表就可以不用学习和记忆基础了。学习基础知识是学好任何一门语言的前提。当然,我是反对为了学习而学习的学习方法的。我的学习理念是,带着需求来学习。这样子不至于刚学过的东西,很快就又抛到脑后了。我们从真正的做项目的需求开始,在一步步的需求中,建立起学习的相关知识点的联系,最终达到成功学习golang的目的。一是学习golang设计理念,二是学习golang的特性,三是学习软件设计,四是深入学习golang与软件开发的结合应用。
golang有着接近c语言的执行速度,同时也有着接近php语言的开发效率。golang使用起来简单、代码描述效率高、编码规范统一、上手快。这样golang就有着广泛的开发前景。
鉴于golang的特点和设计的初衷,golang作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,golang广泛应用于Web 应用、API应用、下载应用等;除此之外,golang还适用于内存数据库和云平台领域,目前国外很多云平台都是采用开发。