非零基础自学Golang
文章目录
- 非零基础自学Golang
- 第1章 走进Go
- 1.1 Go编程语言概述
- 1.1.2 Go 语言特性及应用场景
第1章 走进Go
1.1 Go编程语言概述
1.1.2 Go 语言特性及应用场景
随着人工智能、大数据和云计算时代的到来,Python、Java和PHP等编程语言风靡盛行,C/C++等编程语言也有自己的特性和应用场景,
那么作为后起之秀的Go语言究竟有哪些特性和优势?这些特性又适用于哪些应用场景呢?
【云原生时代,必须掌握 Go】
【Go语言特性】
-
容易上手
Go语言上手非常容易,许多零基础的初学者在学习大约一周【好家伙】的时间后就可以使用Go语言完成一些既定的任务。
而C/C++等语言,则需要经过几个月的时间学习才开始上手,并且学习中的大量时间都用于避免语法错误和调试代码bug。
-
编译速度快
在Go编程语言的1.7版本更新中,通过减少编译器所使用的内存量、减少链接时间来减少总的编译时间。根据测试,这项改进和Go1.5.3相比减少了20%~30%的总编译时间。
另外,Go语言工程结构简单,没有头文件和不允许包的交叉编译等规则,这也在很大程度上减少了编译所需的时间。
-
原生支持并发
Go语言最主要的特性就是从语言层面原生支持并发,无须任何第三方库。
Go的并发基于goroutine,可以理解为一种微线程。
goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。
Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函数创建一个默认的 goroutine。
与Python的多线程性能限制于GIL全局锁不同,Go语言的并发可以充分利用CPU的资源,将goroutine合理地分配到每个CPU中,最大限度地使用CPU的性能。goroutine之间的通信可以使用Go语言的sync包和channel机制来实现。
-
垃圾回收
一直以来,内存管理是程序员开发中的一大难题。传统的编程语言C/C++中,程序员必须对内存进行细致的管理操作,控制内存的申请及释放,否则就可能产生内存泄漏问题。
为了解决这个问题,Go语言实现了自己的垃圾回收器,在1.3版本前采用传统的Mark and Sweep算法。Go语言在1.5的版本更新中进行了较大改进,使用了三色标记算法,进一步改善了垃圾回收的机制,使程序员更加专注于业务本身,不用把过多的精力投入到垃圾回收中。
-
代码风格清晰
Go语言语法在C语言的基础上进行优化,去掉了表达式和for循环中冗余的括号,强制统一了代码风格,如Go语言中,左括号必须紧接着语句不进行换行。【牛逼】
有些开发者,特别是有其他编程语言开发经验的人,刚开始时会对这个特性感到不习惯,但随着对Go语言的不断深入熟悉,就会发现这个特性能让代码阅读者将更多精力投放到代码本身,而不是代码风格上去。
【Go 语言主要应用 】
由于以上特性,Go语言主要应用于以下三个方面:(1)服务端开发;(2)高并发处理;(3)网络编程。
基于以上三个方面,Go语言可以具体用于服务端网络请求接收和解析、分布式系统开发、后端API接口开发和虚拟机处理等。
【好!】