Go语言专题之Go语言介绍(一)

发布于:2023-06-30 14:40:54

为什么要学Go语言?

Go语言是谷歌2009发布的第二款开源编程语言。是从Ken Thompson发名的B语言、Dennis M.Ritchie发明的C语言逐步演化过来的,是C语言家族成员,因此很多人将Go语言称为21世纪的C语言。现如今Go语言已经成为云计算、云存储时代最重要的基础编程语言(摘自Go语言圣经)。

Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

为什么要选择学习Go语言呢?与其他语言的应用相比,它有什么优点呢?

1、学习曲线

它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。

2、效率

Go拥有接近C的运行效率和接近PHP的开发效率,这就很有利的支撑了上面大家追求快速的需求。

3、出身名门、血统纯正

之所以说Go语言出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。而且从Go语言的发展态势来看,Google对它这个新的宠儿还是很看重的,Go自然有一个良好的发展前途。我们看看Go语言的主要创造者,血统纯正这点就可见端倪了。

4、自由高效:组合的思想、无侵入式的接口

Go语言可以说是开发效率和运行效率二者的完美融合,天生的并发编程支持。Go语言支持当前所有的编程范式,包括过程式编程、面向对象编程以及函数式编程。程序员们可以各取所需、自由组合、想怎么玩就怎么玩。

5、强大的标准库

这包括互联网应用、系统编程和网络编程。Go里面的标准库基本上已经是非常稳定了,特别是我这里提到的三个,网络层、系统层的库非常实用。

6、部署方便:二进制文件、Copy部署

我相信这一点是很多人选择Go的最大理由,因为部署太方便了,所以现在也有很多人用Go开发运维程序。

7、简单的并发

它包含了降低心智的并发和简易的数据同步,我觉得这是Go最大的特色。之所以写正确的并发、容错和可扩展的程序如此之难,是因为我们用了错误的工具和错误的抽象,Go可以说这一块做的相当简单。

8、稳定性

Go拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具,具有很强的稳定性,稳定压倒一切。那么为什么Go相比于其他程序会更稳定呢?这是因为Go提供了软件生命周期(开发、测试、部署、维护等等)的各个环节的工具,如go tool、gofmt、go test。

Go语言目前使用趋势(数据来自TLOBE官网):

Go语言前景:

数据来自互联网

Go语言主要特征

1、内置runtime,支持自动垃圾回收,像java、c#、python等语言自带GC,不用为内存回收苦恼。

2、丰富的内置数据类型,像map、slice这些常用的数据类型。

3、函数返回多值,多值返回仅动态语言Python有此特征。

4、可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,它可以在一台计算机上几秒内编译出一个大型的Go语言程序。

5、Go语言层面天生支持并发,这是Go语言最大的特色,可以充分的利用多核,很容易的实现并发操作。

6、内置强大的工具,Go语言里面内置了很多工具链,如gofmt格式化代码,跨平台编译等。

7、Go语言内嵌C语言支持(其作者就包括C语言的作者),所以Go语言里面也可以直接包含C语言代码,利用现有的丰富的C语言库。

8、Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。

Go能做什么?

Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;

网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云平台领域,目前国外很多云平台都在采用Go开发。

谁在使用Go?

Google

这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go开源项目。

Facebook

Facebook也在用,为此他们还专门在Github上建立了一个开源组织facebookgo,大家可以通过 https://github.com/facebookgo 访问查看facebook开源的项目,比如著名的是平滑升级的grace。

腾讯

腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考:http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice

百度

目前所知的百度的使用是在运维这边,是百度运维的一个BFE项目,负责前端流量的接入。他们的负责人在2016年有分享,大家可以看下这个http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend

阿里

阿里巴巴具体的项目不太清楚,不过听说其系统部门、CDN等正在招Go方面的人。

京东

京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。

小米

小米对Golang的支持,莫过于运维监控系统的开源,也就是 http://open-falcon.com/

此外,小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。

360

360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon

七牛云

七牛云的第一个业务是云存储,完全用Go来开发存储系统,这是全球第一个用Go写的云存储和云服务。

Go语言成熟的项目

1、nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息

2、docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建

3、kubernetes:Google出品,用于调度和管理Docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。

4、etcd:一款分布式的,可靠的K-V存储系统,使用简单,速度快,又安全。

5、packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者

6、skynet:分布式调度框架

7、Doozer:分布式同步工具,类似ZooKeeper

8、Heka:mazila开源的日志处理系统

9、cbfs:couchbase开源的分布式文件系统

10、tsuru:开源的PAAS平台,和SAE实现的功能一模一样

11、groupcache:memcahe作者写的用于Google下载系统的缓存系统

12、god:类似redis的缓存系统,但是支持分布式和扩展性

13、gor:网络流量抓包和重放工具

14、hugo:一款*速的静态页面生成器,让你可以很快的搭建个人网站,提供了多套主题可供使用,并且可以自己定制,和NodeJS的Hexo是一样的。

15、grafana:一款开源监控度量的看板系统,可以接

16、Graphite,Elasticsearch,InfluxDB等数据源,定制化很高。

17、caddy:快速的,跨平台的HTTP/2 Web服务器。

18、beggo:国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔。

19、codis:Codis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。

20、pholcus:Pholcus(幽灵蛛)是一款纯Go语言编写的支持分布式的高并发、重量级爬虫软件,定位于互联网数据采集,为具备一定Go或JS编程基础的人提供一个只需关注规则定制的功能强大的爬虫工具。

本专栏将长期发布Go语言系列文章,计划从基础到项目实战,再到后期实际应用,关注此订阅号将为您带来详细的Go语言教程并快速使用Go语言

Go语言系列文章同步开通‘微信订阅号’,搜索关注“运维技术栈”获取最新的文章


免责声明:本站所有内容及图片均采集来源于网络,并无商业使用,如若侵权请联系删除。

上一篇:Go语言有没有比较好的适合小白的学习资料?

下一篇:锤友意外淘到坚果TNT go工程机:本人“太开心了”是谁偷了我的222分?考生两次查分从586变364,结局反转令人唏嘘

资讯 观察行业视觉,用专业的角度,讲出你们的心声。
MORE

I NEED TO BUILD WEBSITE

我需要建站

*请认真填写需求信息,我们会在24小时内与您取得联系。