Golang概述

Go

Go语言是谷歌2009发布的编程语言,它是一种并发的、带垃圾回收的、快速编译的语言。

它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。Go语言号称是云计算时代的C语言。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。

缘由

  • 硬件发展快~~摩尔定律,主流编程语言发展效率跟不上硬件;
  • 软件开发复杂度、维护成本越来越高,缺乏 足够简洁高效的编程语言;
  • C C++ 运行速度快,但编译慢,还有内存泄漏问题。

成功元素

特性

* 并发
* 垃圾回收
* 高效的实现
* 给人以动态类型体验的静态类型系统
* 丰富但规模有限的标准库
* 工具化
* gofmt
* 在大规模系统中的应用

优势

  1. 语法简单,上手快;
  2. 性能高,编译快,开发效率也不低;
  3. 丰富的标准库;
  4. 原生支持并发,协程模型是非常优秀的服务端模型,同时也适合网络调用;
  5. 部署方便,编译包小,除 glibc 外没有其他外部依赖;
  6. 自带完善的工具链, 大大提高了团队协作效率和一致性。 比如 gofmt ,gofix,,govet 等工具。

Docker等很多 Go 产品的流行,更证明了 Go 语言的优秀。

适用场景

  • 服务器编程,如:处理日志、数据打包、虚拟机处理、文件系统等;

  • 分布式系统,数据库代理器等;

  • 内存数据库,google开发的groupcache,couchbase的部分组建;

  • 云平台,目前国外很多云平台在采用Go开发,如:CloudFoundy(VMware推出的业界第一个开源PaaS云平台)的部分组建。

成功项目

nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息
docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。
packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
skynet:分布式调度框架
Doozer:分布式同步工具,类似ZooKeeper
Heka:mazila开源的日志处理系统
cbfs:couchbase开源的分布式文件系统
tsuru:开源的PAAS平台,和SAE实现的功能一模一样
groupcache:memcahe作者写的用于Google下载系统的缓存系统
god:类似redis的缓存系统,但是支持分布式和扩展性
gor:网络流量抓包和重放工具

缺点

  1. Go的import包不支持版本,有时候升级容易导致项目不可运行,需要自己控制相应的版本信息;

  2. Go的goroutine一旦启动之后,不同的goroutine之间切换不是受程序控制,需要严谨的逻辑;

  3. GC延迟有点大,并发很大的情况下,处理很大的日志,GC 没有那么快,内存回收不给力,后来经过 profile 程序改进之后得到了改善;

  4. 没什么太多应用场景非要 Golang 才能做的 ( Golang 最大特点是异步和单进程跑多核 );

  5. 开发 web 没有 php ruby 成熟、快速;

  6. 开发 server 没有 java 现成解决方案多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值