多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Go 简介 * * * * * --: 作者:Mick 时间:2018年8月21日 * * * * * ### 能干啥 Go语言是非常有潜力的语言,是因为它的应用场景是目前互联网非常热门的几个领域 : 1. 区块链开发 2. 大型游戏服务端开发 3. 分布式/云计算开发 目前国外很多云平台在采用Go开发CloudFoundy 4. 服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等 5. 分布式系统,数据库代理器等 6. 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用 7. 数据库(分布式或缓存) 8. 微服务 ### 优秀开源项目 1. 容器(及相关):runc, docker, coreos, codetainer, kitematic 2. 服务自理管理平台: Kubernates 3. 微服务(含自动化部署/服务发现/调度器/etc):flynn, tsuru, deis, otto, terraform, consul, skydock, nomad, kubernetes 4. 数据库(及相关): tiDB、etcd (键值), boltdb (键值/事务), cayley(图),prometheus/seriesly (时间序列), cockroachdb, TiDB, influxdb, goleveldb,vitess, reborndb, pgweb, beedb 5. 其他:skydns, gryffin (Web安全), bosun (监控) ### 优秀框架 1. beego:web框架-》ThinkPHP 2. revel:强大的web框架-》Laravel 3. gwk(GO Web Server Kit)是GO语言的Web Server开发框架,简单易用,扩展性好,而且兼容Go App Engine ### Go 的诞生 **谷歌工程师的20%时间** 谷歌的“20%时间”工作方式,允许工程师拿出20%的时间来研究自己喜欢的项目。 1. 语音服务Google Now 2. 谷歌新闻Google News 3. 谷歌地图Google Map上的交通信息 4. Go语言 **诞生时间 ** Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作 **开发作者 ** 1. 肯尼斯·汤普逊(Ken Thompson) 是美国计算机科学学者和工程师。黑客文化圈子通常称他为“ken”[1]。在贝尔实验室工作期间,汤普逊设计和实现了Unix操作系统 2. 罗勃·派克(Rob Pike),来自加拿大的程序员,曾经加入贝尔实验室,为 UNIX小组的成员。曾经参与过贝尔实验室九号计划、Inferno,与编程语言 Limbo的开发。他与肯·汤普逊共同开发了UTF-8 3. 罗伯特(Robert Griesemer) Robert已经为Google的V8 JavaScript引擎和Chubby(Google的GFS分布式文件系统的分布式锁管理器)编写了代码。他还研究了特定领域语言SAWZALL、Java热点虚拟机和StrutTalk系统的设计和实现。他还为Cay-Y-MP编写了一个矢量化编译器,并为APL编写了一个解释器。 ### Go 优势 ![](https://box.kancloud.cn/b59c83ee7b25f616a755a441fe816ae9_428x365.jpeg) 1. 可直接编译成机器码,其性能与 Java 或 C++ 相似。在我们的使用中,Go 一般比 Python 要快 30 倍双击666 2. 静态类型语言即强类型必须有类型 3. 天生的支持高并发,我曾经说过一句话,天生的基因和整容是有区别的,大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。 4. 内置runtime,支持垃圾回收,这属于动态语言的特性之一 5. 简单易学,语法简单明了 6. 内置强大的工具,gofmt,test,godoc,build,clean,doc,env 7. 内嵌C支持,前面说了作者是C的作者,所以Go里面也可以直接包含c代码,利用现有的丰富的C库。 ### Go 缺点 1. Go的import包不支持版本,有时候升级容易导致项目不可运行,所以需要自己控制相应的版本信息 2. Go的goroutine一旦启动之后,不同的goroutine之间切换不是受程序控制,runtime调度的时候,需要严谨的逻辑,不然goroutine休眠,过一段时间逻辑结束了,突然冒出来又执行了,会导致逻辑出错等情况 3. GC延迟有点大,我开发的日志系统伤过一次,同时并发很大的情况下,处理很大的日志,GC没有那么快,内存回收不给力,后来经过profile程序改进之后得到了改善 4. pkg下面的图片处理库很多bug,还是使用成熟产品好,调用这些成熟库imagemagick的接口比较靠谱 ### 中国Go语言布道者-许式伟 在 QCon 2015 上海站上,许式伟曾经做过《Go 语言发展状况》的主题分享。对于 Go 语言,他提到过三个预测: 第一个预测,我最早在 2012 年新浪微博里提过,Go 语言 10 年内一定会超过 C 和 Java,变成排行榜第一的语言。今天大家可能会略相信,但在 2012 年的时候没有多少人会相信,即使今天讲出来,绝大部分人都会觉得太早,毕竟它还没有排进前五。 第二个预测,Go 语言将在两年内制霸云计算领域。 第三个预测,Go 将统治下一个 10 年。(来自于 Deferpanic 创始人 Lan Eyberg)。