欢迎大家来到Gopher_Zone,今天要隆重介绍的是编程界的新秀Go,一个有望成为新时代男主角的男人。实事求是哈,自从出道以来,Go语言备受Google公司内部的重视,在开源社区更是受到广大Gopher爱好者的青睐。
至此,大家会感到有些疑惑,为什么Go语言会有望成为新时代的编程界男主角呢?又是什么让它有如此大的魅力呢?接下来,让我们慢慢的走近它,了解它。
简介:
Go语言是谷歌推出的一种静态强类型、编译型、并发型,并具有垃圾回收功能的全新编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧,而Go语言让我体验到了从未有过的开发效率,它是一种抛弃繁杂,重于解决实际问题的实践型编程语言。
优势:
1、学习曲线容易
Go语言语法相对简单,罗布派克(Rob Pike)认为Go与Java类似,对于Java开发者来说,应该能够轻松学会Go。之所以将Go作为一个开源项目发布,目的是让开源社区有机会创建更好的工具来使用该语言,例如 Eclipse IDE中的插件。
2、效率&性能
开发过程中相较于Java和C++呆滞的编译速度,Go的快速编译时间是一个主要的效率优势;Go拥有接近C的运行速率和接近PHP的开发效率。
3、强大的标准库
Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,Go语言的标准库不但能让你访问底层操作系统进行系统编程,还提供了强大的互联网应用编程、网络编程、和并发编程、分布式编程支持。
4、自由高效
组合的思想,非侵入式接口。Go语言可以说是开发效率和运行效率的完美融合,天生的并发编程支持。Go语言支持几乎当前所有的编程范式:过程式编程、面向对象编程、面向接口编程、函数式编程。Gophers可以各取所需,自由组合,总之就是两个字,优秀。
5、并发性&协程与通道
Go 作为一门语言致力于使事情简单化。它并未引入很多新概念,而是聚焦于打造一门简单的语言,以并发编程为例。Goroutines(协程)是Go 面向线程的轻量级方法,而channel(信道)是 Goroutines(协程)之间通信的优先方式。简单对比一下
(1)内存消耗方面:
每个 Goroutine (协程) 默认占用内存远比 Java 、C 的线程少
goroutine:2KB
线程:8MB
(2)线程和Goroutine(协程)切换调度开销方面
线程/Goroutine 切换开销方面,goroutine 远比线程小
线程:模式切换(从用户态切换到内核态)、16个寄存器、PC、SP...等寄存器的刷新
Goroutine :只有三个寄存器的值修改 - PC / SP / DX
6、支持gRPC和Protocol Buffers
Go 语言对 protocol buffers 和 gRPC 有一流的支持。这两个工具能一起友好地工作以构建需要通过 RPC 进行通信的微服务器(microservices),可以更加高效,更加迅速的实现服务端与客户端的通信。
优势介绍,未完待续,在以后的文章中加以补充。
应用领域:
因为Go语言的强大优势,以及待开发的优秀的潜力,在相当多的领域都有它的身影。
1、服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
2、网络编程,主要是Web应用、API应用。
3、因优秀的并发编程,适合游戏服务端开发。
4、容器领域,比较知名的开源项目Docker、K8s等就是Go语言实现的。
5、区块链领域,分布式数据库开发、这一领域是目前比较流行的。
6、云平台、云计算领域,2018年7月24日,Go 语言团队发布了一个新的开源项目Go Cloud。Go Cloud 是一个可在开放云平台上进行开发的库和工具集,旨在让Go语言成为开发构建可移植云端应用程序的首选语言。
版本简史:
随着版本的不断迭代与优化,性能更加优越,功能更加强大,在Go1.11最新版本中已实现对Go module的支持,逐渐弱化了工作目录GoPath的强制要求。
时间点 | 版本介绍 |
2007年 | 谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型 |
2009年11月10日 | Go语言以开放源代码的方式向全球发布 |
2011年3月16日 | Go语言的第一个稳定(stable)版本r56发布 |
2013年4月04日 | Go语言的第一个Go 1.1beta1测试版发布 |
2013年5月02日 | Go语言的第二个Go 1.1beta2测试版发布 |
2013年5月07日 | Go语言Go 1.1RC2版发布 |
2013年5月09日 | Go语言Go 1.1RC3版发布 |
2013年5月13日 | Go语言Go 1.1正式版发布 |
2013年9月20日 | Go语言Go 1.2RC1版发布 |
2013年12月1日 | Go语言Go 1.2正式版发布 |
2014年6月18日 | Go语言Go 1.3版发布 |
2014年12月10日 | Go语言Go 1.4版发布 |
2015年8月19日 | Go语言Go 1.5版发布,本次更新中移除了”最后残余的C代码” |
2016年2月17日 | Go语言Go 1.6版发布 |
2016年8月15日 | Go语言Go 1.7版发布 |
2017年2月17日 | Go语言Go 1.8版发布 |
2017年8月24日 | Go语言Go 1.9版发布 |
2018年2月16日 | Go语言Go 1.10版发布 |
2018年8月25日 | Go语言Go1.11 版本正式发布 |
支持平台:
硬件架构,Go语言设计支持主流的32位的X86平台、同时也支持32位的ARM架构。
操作系统,Go语言在Go1版本上支持Windows, 苹果Mac OS X, Linux等操作系统。
开发工具:
个人推荐GoLand开发IDE,Goland是专门针对Go语言的集成开发环境,目前已成为付费软件,最新版支持Go 1.9,支持类型别名。
优秀编号 | 优秀特征介绍 |
1 | 语法高亮显示 |
2 | 片段中内嵌的C语法高亮显示 |
3 | 与Go标准一致的项目管理方式 |
4 | gofmt、goimports自动格式化支持 |
5 | 代码自动完成、重构 |
6 | 大纲显示 |
7 | 源代码跳转 |
8 | 快速API检索 |
9 | 代码表达式信息显示 |
10 | 断点调试支持 |
11 | 使用Delve进行远程调试 |
12 | 支持Docker容器的远程调试 |
13 | 参数名称显示 |
14 | 编辑器样式风格调整 |
15 | 键盘快捷键自定义配置 |
16 | Markdown支持(插件) |
17 | 安装插件实现更多功能 |
众多优秀功能,自行研究发现 |
简单示例:
功能:实现两个变量的交换
package main
import "fmt"
func main() {
var (
fNum = 12
sNum = 36
)
fNum,sNum=sNum,fNum
fmt.Println(fNum,sNum)
}
总结:
Go语言实际上是一种改良派,汲取以往语言的精华,摒弃以往语言中的繁杂不使用的糟粕新时代编程语言,它更加着重于解决实际中遇到的问题,更加注重于实践性。相信你在看完本篇文章的介绍后,应该对这位编程界的新秀有了一定程度上的了解。因为篇幅有限,感兴趣的同学,可以在网上冲浪一下,根据需要,汲取自己预期的营养。
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。
- 赞助本站
- 微信扫一扫
-
- 加入Q群
- QQ扫一扫
-
评论