Go语言简介

Go是一门编译型的和静态的编程语言。 Go诞生于谷歌研究院。 Go的核心设计成员中包括很多有着数十年编程语言研究领域经验的研究者。

Go有很多特性,有一些是独特的,有一些借鉴于一些其它编程语言。 除了以上特性,Go还有如下亮点:

Go程序员常常被称为地鼠(gopher)。

上面已经提到,Go属于编译型的静态语言。但是Go的很多特性使得用Go编程像使用动态脚本语言一样的灵活。 一般很难将静态语言的严格性和动态语言灵活性的优点合二为一。但是Go做到了这一点。 当然,合二为一也会不可避免地带来一些弊端。 但是,对于Go来说,合二为一带来的好处远多于合二为一的带来的弊端。

可读性是在Go语言的设计中一个非常重要的考虑因素。 一个Go程序员常常可以轻松读懂其他Go程序员写的代码。 甚至对于一个没有Go编程经验但具有其它语言编程经验的程序员来说,读懂一份Go源码也不是一件难事。

目前,使用最广泛的Go编译器由Go官方设计和开发团队维护。 以后我们将称此编译器为标准编译器。标准编译器也常常称为gc(是Go compiler的缩写,不是垃圾回收garbage collection的缩写)。 Go官方设计和开发团队也维护着另外一个编译器,gccgogccgo是gcc编译器项目的一个子项目。 gccgo的使用广泛度大不如gc, 它的主要作用是做为一个参考,来保证gc的实现正确性。 目前两个编译器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力更多。

gc编译器是Go SDK中一个组件。 Go SDK的使用将在下一篇文章中介绍。 Go SDK 1.0发布于2012年三月。 Go语言规范的最新版本和Go SDK的最新版本总是保持一致。 每年Go SDK发行两个主版本。

自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地改进。 使用早期的gc编译的程序在运行的时候在每次垃圾回收的结尾常常会有明显的停顿。 但是自从Go 1.8,使用gc编译的程序在运行时刻已经基本消除了停顿现象。

gc支持跨平台编译。 比如,我们可以在Linux平台上编译出Windows程序,反之亦然。

使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重要因素。 编译时间短是很多程序员喜欢Go的一个原因。

Go程序生成的二进制可执行文件常常拥有以下优点: 很多C家族语言,比如C/C++/Rust等,也拥有上述的优点。 但它们缺少Go语言的几个重要优点:

上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说,Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数据库开发和区块链开发。 也有越来越多的游戏、大数据和人工智能项目开始使用Go开发。

最后,我们应该知道,没有一门语言是完美的。Go也一样。 Go的设计中有很多折衷和各种权衡。 Go 1确实有一些不足。 比如,目前Go不支持自定义范型。 Go设计团队并不排斥自定义范型,他们只是还没有找到一个优美的自定义范型设计方案能够保持Go语法的简洁性。 目前Go 2的设计工作已经提上日程。 未来没有什么是不可能的。

Go语言101项目目前同时托管在GithubGitlab上。 欢迎各位在这两个项目中通过提交bug和PR的方式来改进完善Go语言101中的各篇文章。

本书微信公众号名称为"Go 101"。每个工作日此公众号将尽量发表一篇和Go语言相关的原创短文。各位如果感兴趣,可以搜索关注一下。

赞赏