Go语言是Google推出的一个全新的编程语言,在2009年11月正式对外发布。经过快速迭代,2012年3月28日,Go发布第⼀个正式的稳定版本。

语言特性

出身名门的go语言,吸收了其他语言的特点,是一种并发的、带垃圾回收的、快速编译的语言。

  • 自动垃圾回收
  • 函数多返回值,多值返回仅动态语言Python有此特性
  • 并发编程,引入goroutine的概念,是一种比线程更加轻盈、更省资源的协程
  • 异常处理,不支持try-catch语句,利用defer panic recover错误处理机制
  • 反射,和java php里的反射(Reflection)类似
  • Go可以和C程序交互
  • 跨平台,Go支持交叉编译

语言优势

编程语言五花八门,在C/C++ Java Python PHP JavaSrcipt 等主流语言强势领头的环境下,Go语言也有着其独特的优势,抓住开发者的痛点,以最直接、简单、高效、稳定的方式来解决问题。

易学

Go语言语法简单,只有25个关键词,如果你有C、java、php等任意一种语句基础,只需要几天就可以快速上手,写出一个像样的、高性能的应用。

开发效率和运行效率

Go语言拥有PHP的开发效率和接近C语言的运行效率。静态类型和严格的编译检查,大大降低的开发过程中的调试时间,另外快速编译也大大提升了开发效率。

部署简单

Go语言不想PHP、Python那样需要部署源码,Go编译生成一个可执行文件,只需要部署可执行文件即可。线上服务器完全不用处理各种依赖库,降低了运维的工作量。这和PHP有着巨大的区别,部署PHP应用时,往往需要编译PHP环境及其相关扩展库,甚至需要composer安装各种依赖库。

并行和异步编程简单

协程(goroutines)不同于线程,协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,并且在真正的实现中寄存于线程中,因此系统开销极小,可以有效的提高线程任务的并发性,而避免多线程的缺点。

Go语言的协程(Goroutine) 和 Channel 让并行和异步编程变得非常简单。 个人认为,协程是Go语言与其他语言最大的区别之一,也是Go语言的天生优势。

应用场景

  • Web应用,Go拥有PHP的开发效率,先天的并发优势
  • 服务器应用,Go可以编译成可执行文件,所有可以使用Go语言做C或者C++做的事,比如文件处理、系统运维、网络编程等底层开发
  • 微服务,这里不得不提到gRPC,gRPC是由Google主导开发的RPC框架,可以使用GRPC+HTTP打造微服务
  • 区块链开发,GO语言成为很多人公认的区块链开发语言之一 分布式系统,数据库代理器等
  • 分布式系统、存储系统等,例如Etcd

知名应用和企业

Go语言近几年非常火爆,很多知名企业和应用使用Go语言作为主要开发语言。

  • 热火朝天的 Docker
  • Kubernetes ,用于自动部署, 扩展和管理容器化应用程序的开源系统
  • ETCD,分布式、可靠的键值存储系统
  • Google、Facebook等
  • 百度、⼩⽶、七⽜、阿里云等