【Go语言教程】(零) Go/Golang简介

Go 语言简介

【Go语言教程】(零) Go/Golang简介Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

Go 语言特色

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

Go 语言的优势

  • 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。

  • 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。

  • 语言层面支持并发,这个就是Go最大的特色,天生的支持并发,我曾经说过一句话,天生的基因和整容是有区别的,大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。

  • 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。

  • 简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。

  • 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大,我最爱的也是这部分。

  • 内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。

  • 跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息。

  • 内嵌C支持,前面说了作者是C的作者,所以Go里面也可以直接包含c代码,利用现有的丰富的C库。

Go 语言用途

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型*服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

Go 语言适合用来做什么

  • 服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
  • 分布式系统,数据库代理器等
  • 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用、
  • 内存数据库,前一段时间google开发的groupcache,couchbase的部分组建
  • 云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。

Go 语言成功的项目

名称 简介
Docker Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用和依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 、Mac 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Kubernetes Kubernetes,简称 k8s,是用 8 代替 8 个字符 “ubernete” 而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署、规划、更新、维护的一种机制。
Fedora CoreOS CoreOS 是一种操作系统,于 2013 年十二月发布,它的设计旨在关注开源操作系统内核的新兴使用 — 用于大量基于云计算的虚拟服务器。
InfluxDB InfluxDB是一个用于存储和分析时间序列数据的开源数据库。是“没有外部依赖的分布式时间序列数据库”。
Istio Istio提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。
Traefik Traefik 是一个为了让部署微服务更加便捷而诞生的现代 HTTP 反向代理、负载均衡工具。 它支持多种后台 (Docker,Swarm,Kubernetes,Marathon,Mesos,Consul,Etcd,Zookeeper,BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。
Hugo Hugo 是由 Go 语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。
Terraform HashiCorp — 由 Vagrant(基于 Ruby 的开发环境管理工具)的开发者创办,它充分利用 Go 的速度和强大来构建更庞大更宏伟的项目:Terraform,该系统用于通过定义文件转为代码在本地或云端构建 IT 基础架构
CockroachDB Go 常被用于构建各种分布式云原生应用程序。CockroachDB以弹性而闻名,这种分布式数据库旨在承受各种各样的灾难(甚至是数据中心故障),而能继续响应你的 SQL 查询。
Gravitational Teleport Go 已成为许多网络项目以及基于它们的下游项目的默认语言。一个典型的例子是:用 Go 实现的 SSH 本身就很有用,充当Gravitational Teleport[38]等项目的基础。Gravitational Teleport 让用户可以通过 shell 安全地访问服务器。它通过单点登录来保证安全,但又不需要事务通常需要的那种管理开销(比如**管理和轮换)。

2020年十月编程语言排行榜

【Go语言教程】(零) Go/Golang简介

转载于:

作者:Serdar Yegulalp[1]原文链接:10 open source projects proving the power of Google Go[2]译者:Go 语言中文网 polaris ,非原文直译方式

作者:jking10 原文链接:Go语言特点

作者:菜鸟教程 原文链接:Go 语言教程