GO语言简介

Go 语言介绍

Go 即 Golang,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。

Go 是静态强类型语言,是区别于解析型语言的编译型语言。

解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。

编译型语言——源代码编译生成机器语言,然后由机器直接执行机器码即可执行。

Go 语言特性

跨平台的编译型语言

语法接近 C 语言

管道(channel),切片(slice),并发(routine)

有垃圾回收的机制

支持面向对象和面向过程的编程模式

Go 语言发展(版本 / 特性)

2009 年 11 月 7 日 weekly.2009-11-06 —— 早期的版本

2012 年 3 月 28 日 go1 —— 稳定版版的发布

2013 年 5 月 14 日 go1.1 —— 语言本身的变化、库的变化等。

2013 年 12 月 01 日 go1.2 —— 提供更好的调度和一个新的语言特性。

2014 年 6 月 18 日 go1.3 —— 主要是在实现的工作上的变化,以及精准的垃圾回收。

2014 年 12 月 10 日 go1.4 —— 包含了 2 个很小的语言变更。

2015 年 8 月 19 日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性。

2016 年 2 月 7 日 go1.6 —— 语言本身、运行时、和库的实现的变化。

2016 年 8 月 15 日 go1.7 —— 标准库有显着的性能改进和变化。

2017 年 2 月 26 日 go1.8 —— 标准库有显着的性能改进和变化。

2017 年 8 月 24 日 go1.9 —— 是包含语言,标准库,以及运行时的诸多变化。这个版本中的大部分工作都是对运行时和工具的改进。

2018 年 2 月 16 日 go1.10 —— 大部分更改都在工具链,运行时和库的实现中。

2018 年 8 月 24 日 go1.11 —— modules 和 WebAssembly 支持。

Go 语言应用

谁在用

Google

这个不用多做介绍,作为开发 Go 语言的公司,当仁不让。Google 基于 Go 有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在 Github 上 https://github.com/google/ 查看更多 Google 的 Go 开源项目。

Facebook

Facebook 也在用,为此他们还专门在 Github 上建立了一个开源组织 facebookgo,大家可以通过 https://github.com/facebookgo 访问查看 facebook 开源的项目,比如著名的是平滑升级的 grace。

腾讯

腾讯作为国内的大公司,还是敢于尝试的,尤其是 Docker 容器化这一块,他们在 15 年已经做了 docker 万台规模的实践,具体可以参考 http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

主要职责是:

负责腾讯游戏蓝鲸平台后台开发工作
负责容器相关的开发工作

和蓝鲸平台,容器开发有关。腾讯作为主要使用 C/C++ 的公司,使用 Go 会方便很多,也有很多优势,不过日积月累的 C/C++ 代码很难改造,也不敢动,所以新业务会在 Go 方面尝试。

百度

目前所知的百度的使用是在运维这边,是百度运维的一个 BFE 项目,负责前端流量的接入。他们的负责人在 2016 年有分享,大家可以看下这个 http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend .

其次就是百度的消息系统,从其最近的 Golang 招聘介绍就可以看出来.

负责公司手百消息通讯系统服务器端开发及维护

京东

京东云消息推送系统、云存储,以及京东商城等都有使用 Go 做开发。

小米

小米对 Golang 的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/

此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用 Golang。

360

360 对 Golang 的使用也不少,一个是开源的日志搜索系统 Poseidon,托管在 Github 上,https://github.com/Qihoo360/poseidon.

还有 360 的推送团队也在使用,他们还写了篇博文在 Golang 的官方博客上 https://blog.golang.org/qihoo

360 直播在招聘 Golang 开发工程师。

美团、滴滴、新浪以及七牛等。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang 特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。

应用领域

服务开发、并发、分布式、微服务等方向

Go 语言项目

docker: 基于 lxc 的一个虚拟打包工具,能够实现 PAAS 平台的组建。

kubernetes :Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡

区块链:BTCD 是用 go 语言实现的完整节点的比特币实现

nsq:bitly 开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息

packer: 用来生成不同平台的镜像文件,例如 VM、vbox、AWS 等,作者是 vagrant 的作者

skynet:分布式调度框架

Doozer:分布式同步工具,类似 ZooKeeper

Heka:mazila 开源的日志处理系统

cbfs:couchbase 开源的分布式文件系统

tsuru:开源的 PAAS 平台,和 SAE 实现的功能一模一样

groupcache:memcahe 作者写的用于 Google 下载系统的缓存系统

god:类似 redis 的缓存系统,但是支持分布式和扩展性

gor:网络流量抓包和重放工具

Go 语架构

GOPATH 的工作区包含 bin,src,和 pkg 这三个:

src——源码(包含第三方的和自己项目的)

bin——编译生成的可执行程序

pkg——编译时生成的对象文件

Go 语言发展前景

Go 语言将登上语言榜前列,与 C 和 Java 并列前三甲

Go 语言称霸云计算

Go 将统治下一个 10 年

原文地址:https://www.cnblogs.com/Gaimo/p/14808146.html