前言
由于公司项目中用到了 Go 语言开发,开始学习 Go 语言。作为一个 Java 开发者,Go 与 Java 对比来说 Go 的执行性能和开发性能比 Java 稍微好一点,自身的异步框架是个很不错的优势,Java 只能用一些异步的框架。
Java 的虚拟机是世界上最好的,性能明显高于 Go,而高并发性能也比 Java 快,但是说性能这个东西,也许你一辈子工作也接触不到一种语言的瓶颈。
Go 语言
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go 是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson 主持开发,后来还加入了 Ian Lance Taylor, Russ Cox 等人,并最终于2009年11月开源,在2012年早些时候发布了 Go 1稳定版本。现在 Go 的开发已经是完全开放的,并且拥有一个活跃的社区。
Go 语言特色
- 简洁、快速、安全
- 并行、有趣、开源
- 内存管理、数组安全、编译迅速
Go 作为一门高效率的工业化语言备受推崇,这与其语言本身的优势有直接的关系:
- 语法简洁,相比其他语言更容易上手,开发效率更高;
- 自带垃圾回收(GC),不用再手动申请释放内存,能够有效避免 Bug,提高性能;
- 语言层面的并发支持,让你很容易开发出高性能的程序;
- 提供的标准库强大,第三方库也足够丰富,可以拿来即用,提高开发效率;
- 可通过静态编译直接生成一个可执行文件,运行时不依赖其他库,部署方便,可伸缩能力强;
- 提供跨平台支持,很容易编译出跨各个系统平台直接运行的程序。
对比其他语言,Go 的优势也显著。比如 Java 虽然具备垃圾回收功能,但它是解释型语言,需要安装 JVM 虚拟机才能运行;C 语言虽然不用解释,可以直接编译运行,但是它不具备垃圾回收功能,需要开发者自己管理内存的申请和释放,容易出问题。而 Go 语言具备了两者的优势。
如今微服务和云原生已经成为一种趋势,而 Go 作为一款高性能的编译型语言,最适合承载落地微服务的实现 ,又容易生成跨平台的可执行文件,相比其他编程语言更容易部署在 Docker 容器中,实现灵活的自动伸缩服务。
总体来看,Go 语言的整体设计理念就是以软件工程为目的的,也就是说它不是为了编程语言本身多么强大而设计,而是为了开发者更好地研发、管理软件工程,一切都是为了开发者着想。
Go 语言用途
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
K8s、Docker、etcd 这类耳熟能详的工具,就是用 Go 语言开发的,而且很多大公司(如腾讯、字节跳动等)都在把原来 C/C++、Python、PHP 的技术栈迁往 Go 语言。
总结
Go 语言是一门现代编程语言,相比其他编程语言,它对我们开发者有更好的用户体验,因为它的目的就是让我们更专注于自己业务的实现,提高开发效率。与此同时,当下的云原生是一种趋势, Go 语言非常适合部署在这种环境中,越早学习越有竞争力。