购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Go语言简介

Go语言(又称Golang)起源于2007年,正式对外发布于2009年。开发Go语言是为了在不损失应用程序性能的前提下降低代码的复杂性。Go语言是类C语言,而且是经过重大改进的类C语言。Go语言继承了C语言的表达式、基础数据类型、调用参数传值、指针等。此外,Go语言具有很好的编译后机器码的运行效率,并且它有与现有操作系统的无缝适配等特性。使用Go语言不仅能够访问底层操作系统,还能够进行网络编程和并发编程。了解了上述关于Go语言的概括内容后,下面开始学习Go语言。

1.1.1 为什么要学习Go语言

Go语言没有类和继承的概念,这与Java或C++不同。此外,Go语言具备清晰易懂的轻量级类型系统,使其在类型之间没有层级关系。这是因为设计者在设计Go语言时,同时借鉴了Pascal语言、Oberon语言和C语言,并取其精华。因此,Go语言是一门混合型的编程语言。

Go语言不仅具有Python等动态语言的开发速度,而且具备C、C++等编译型语言的性能和安全性,还具备“部署简单、并发性良好、语言设计良好、执行性能好”等优势。

在Go语言正式对外发布之前,如果需要编写系统程序或者网络程序,那么开发者经常面临这样一个问题:是使用执行效率高、编译速度较慢的C++,还是使用编译速度快、执行效率较低的.NET或者Java,抑或是使用一门开发难度低、执行效率一般的动态编程语言呢?

在Go语言正式对外发布之后,开发者发现Go语言能够在编译速度、执行效率和开发难度上找到很好的平衡点,进而达到“快速编译,高效执行,易于开发”的目的。

Go语言使用自带的编译器编译代码。编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件。Go语言支持交叉编译,例如,在Linux系统的计算机上使用Go语言能够开发可以在Windows系统的计算机上运行的应用程序。这使得Go语言成为一门跨系统平台的编程语言。

1.1.2 Go语言的特性

明确Go语言的设计初衷后,下面具体介绍Go语言的主要特性。

语法简单

Go语言的语法规则严谨,没有歧义,没有变异用法,这使每位开发者编写的代码都大致相同,让应用程序具有良好的可维护性。

并发模型

Go语言从根本上让一切都并发化。在运行Go语言应用程序时,使用goroutine运行一切。goroutine是Go语言的重要特征。goroutine让Go语言通过语法实现并发编程变得更容易,无须处理回调,而且不用关注线程切换。

内存分配

将一切并发化带来一个难题:如何实现高并发下的内存分配和管理,为此,Go语言使用为并发而设计的高性能内存分配组件tcmalloc。

标准库

Go语言标准库极其丰富,在不借助第三方扩展插件的情况下,能够完成大部分基础功能的开发工作。此外,Go语言还拥有许多优秀的第三方资源,这让Go语言从近年来几门新出现的编程语言中脱颖而出。

工具链

完整的工具链对于日常开发极为重要。Go语言无论是在编译、格式化、错误检查、帮助文档等方面,还是在第三方包下载、更新等方面都有对应的工具。

1.1.3 Go语言与并发

早期的CPU都是以单核的形式顺序执行机器指令的。顺序是指所有的指令都以串行的方式执行,在同一时刻有且仅有一个CPU在执行机器指令。随着处理器由单核时代向多核时代发展,编程语言也逐步向并发的方向发展。

Go语言就是在时代发展的背景下产生的支持并发的一门编程语言。Go语言从底层原生支持并发,开发者无须使用第三方库就能够轻松地在编写程序时分配CPU资源。

Go语言是在goroutine的基础上实现并发的。goroutine被视为一种虚拟线程,但goroutine不是线程。Go语言在运行应用程序时会参与调度goroutine,把goroutine合理地分配给每个CPU,进而最大限度地使用CPU。

在多个goroutine之间,Go语言使用通道(channel)进行通信(通道是一种内置的数据结构)。也就是说,Go语言使用通道能够在不同的goroutine之间同步发送消息。

如果把并发设计为生产者和消费者的模式,那么就要把在不同goroutine之间同步发送的消息放入通道,把并发设计为生产者和消费者的模式如图1.1所示。

图1.1 把并发设计为生产者和消费者的模式

1.1.4 Go语言的应用

Go语言从发布1.0版本以来,因其简单、高效、并发的特性受到广大开发者的关注,进而被广泛使用。鉴于Go语言的设计初衷和特性,其主要应用领域如下。

服务器编程。如处理日志、数据打包、虚拟机处理、文件系统等。

分布式系统、数据库代理、中间件等。

网络编程。如Web应用、API应用、下载应用等。Go语言非常适合完成网络并发服务,在这个领域内被广泛应用;其内置的net/http包基本上把日常应用程序开发所需的网络功能都实现了。

数据库操作。

云平台领域。Go语言发布后,很多公司(尤其是云计算公司)开始用它重构云平台的基础架构,如阿里中间件、聚美优品、斗鱼直播、人人车、招财猫、美餐网等。 748ls2IcYubBbPl3w8yozVdpsWVFRdP1Frv6p7FK7vARdAzd/5tHMfYwy8TA4NnT

点击中间区域
呼出菜单
上一章
目录
下一章
×