GO语言的优劣势及其相关项目

记得问一个已经在工作的师兄哪些语言需要是大势所趋需要掌握,他说他只会C、C++和Go,当时感到很震惊,我们在学校学的基本都是C、Java、Python之类的,Go语言很少接触,也不知道它的优势在哪。学了近一学期Go语言,在此查阅资料加上自己的感悟体会做个总结

Go语言的优势
  • 可直接编译成机器码,不依赖其他库
  • 静态类型语言,但是有动态语言的一些特性,编写效率高
  • 语言层面支持并发,可以充分的利用多核
  • 内置runtime,支持垃圾回收
  • 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大
  • 内置强大的工具,Go语言里面内置了很多工具链,如自动化格式化代码等
  • 跨平台编译
  • 内嵌C支持
Go语言适合做
  • 服务器编程,例如处理日志、数据打包、虚拟机处理、文件系统等
  • 分布式系统,数据库代理器等
  • 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用
  • 内存数据库,如google开发的groupcache,couchbase的部分组建
  • 云平台,目前国外很多云平台在采用Go开发
Go语言的优秀项目
  • docker,golang头号优秀项目,通过虚拟化技术实现的操作系统与应用的隔离,也称为容器
  • kubernetes,由google开发,简称k8s,k8s和docker是当前容器化技术的重要基础设施
  • etcd,一种可靠的分布式KV存储系统,有点类似于zookeeper,可用于快速的云配置
  • codis,由国人开发提供的一套优秀的redis分布式解决方案
  • tidb,国内PingCAP 团队开发的一个分布式SQL 数据库,国内很多互联网公司在使用
  • influxdb,时序型DB,着力于高性能查询与存储时序型数据,常用于系统监控与金融领域
  • cockroachdb,云原生分布式数据库,继NoSQL之后出现的新的概念,称为NewSQL数据库
  • beego,国人开发的一款及其轻量级、高可伸缩性和高性能的web应用框架
  • caddy,类比于nginx,一款开源的,支持HTTP/2的 Web 服务端
  • flynn,一款开源的paas平台
  • consul,HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置
  • go-kit,Golang相关的微服务框架,这类框架还有go-micro、typthon
  • go-ethereum,官方开发的以太坊协议实现
  • couchbase,是一个非关系型数据库
  • nsq,一款高性能、高可用消息队列系统,每天能处理数十亿条的消息
  • packer,一款用来生成不同平台的镜像文件的工具,例如VM、vbox、AWS等
  • doozer:高速的分布式数据同步服务,类似ZooKeeper
  • tsuru:开源的PAAS平台,和SAE实现的功能一模一样
  • gor:一款用Go语言实现的简单的http流量复制工具
Go语言的劣势
  • 缺少框架:Go 语言没有一个主要的框架,如 Ruby 的 Rails 框架、Python 的 Django 框架或 PHP 的 Laravel
  • 错误处理:Go 语言通过函数和预期的调用代码简单地返回错误(或返回调用堆栈)而帮助开发者处理编译报错。虽然这种方法是有效的,但很容易丢失错误发生的范围,因此也很难向用户提供有意义的错误信息。
  • 软件包管理:Go 语言的软件包管理绝对不是完美的。默认情况下,它没有办法制定特定版本的依赖库,也无法创建可复写的 builds。相比之下 Python、Node 和 Ruby 都有更好的软件包管理系统。
个人体会

就目前个人接触的Go语言相关项目来说,体会最深的就是Go适合做一些高并发项目,如今数据量暴增,云计算、分布式计算、存储等都是需要高并发的处理数据,所以Go语言的应用也越来越多、越来越广泛。开头说的那位师兄目前在某多多工作,像双12这样的购物狂欢就需要很强的高并发。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值