目录

    1. Go 语言产生的背景

    C/C++ 的发展速度没有跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言。为了解决这一问题,Google 开发了一门新的编程语言 – Go 。

    Google 当时的现状:

    • 项目中主要使用C++,也有 Java 和 Python
    • 开发人员众多
    • 代码量大
    • 分布式编译
    • 服务器数量达百万级别

    Google 当时面临的问题:

    • 编译慢
    • 依赖复杂
    • 每个工程师只用了一个语言的一部分特性
    • 代码难以维护,可读性差,文档不清晰
    • 变更功能的成本越来越大
    • 交叉编译困难

    Google 设计 Go 的初衷是为了消除各种缓慢和笨重、改进各种低效和扩展。Go 主要面向的是开发大型系统的人,强调解决工程问题。

    2007 年 Google 发起 Go 项目,2009 年开源项目,2012 年发布第一个正式版本,之后每半年一个版本。在 Google 内部,一开始 Go 作为一个 20% 的项目运作,也就是员工利用 20% 的空余时间来参与开发。

    Go 项目的三位主要领导者对系统编程语言、操作系统和并行都有着深刻理解:

    • Rob Pike,Unix、UTF-8、Plan9 的作者
    • Ken Thompson,B语言、C语言的作者、Unix之父。
    • Robert Griesemer,参与开发 JavaScript 执行引擎 V8,Java HotSpot 虚拟机等。

    这样强大的创始团队阵容,再加上 Google 制造的光环 ,给 Go 项目带来了极高的人气。

    2. Go 语言的适用场景

    Go 适用的一些场景:

    • 服务器编程,处理日志、数据打包、虚拟机处理、文件系统等
    • 分布式系统,数据库代理、中间件等
    • 网络编程,Web 应用、API 应用、下载应用、游戏后端等
    • 海量存储,Influxdb、Tidb 等
    • 云平台,CloudFoundry 等

    使用 Go 的国外公司有 Google、Docker、Apple、Cloud Foundry、CloudFlare、Couchbase、CoreOS、Dropbox、MongoDB、AWS 等。

    使用 Go 的国内公司有头条、阿里云 CDN、百度、小米、七牛、PingCAP、华为、金山软件、猎豹移动、饿了么等。

    3. Go 语言的特点

    Go,又称 Golang,是 Google 开发的一种静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。Google 的很多工程师都是 C 系的,所以 Go 和 C++、Java 、C# 一样属于 C 系。

    在声明和包的设计方面,Go 受到 Pascal、Modula 和 Oberon 系语言的影响;在并发原理的设计上,Go 从同样受到 Tony Hoare 的通信序列进程 CSP 理论影响的 Limbo 和 Newsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。

    Go 语言的优点:

    • 部署简单,编译之后是一个静态可执行文件,除了 glibc ,没有其他外部依赖
    • 并发性好,Goroutine 和 Channel 从语言层面支持并发,编写高并发的应用不需要考虑锁机制,以及由此带来的各种问题
    • 良好的语言设计,自带完善的工具链,例如 gofmt 可自动排版代码
    • 执行性能良好,适合编写瓶颈业务,非常节省内存
    • 丰富的标准库,内置大量的库,可以直接使用