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等
- 百度、⼩⽶、七⽜、阿里云等