1什么是Go?

Go是一门开源、并发支持、具有垃圾回收机制、编译性系统编程语言。在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点。被称为21世纪的C语言。Go语言已经成为云计算、云存储时代最重要的基础编程语言。

首先,Go语言的开源使得全世界的Go语言爱好者(Gopher)都可以为Go的设计和改进做出贡献。Go是在语言级别而非库级别支持并发编程,更好的适应多核以及集群化开发。具有垃圾回收机制使得开发者再也不用担心内存泄漏问题。和C一样作为一种编译型系统编程语言保证了Go程序的性能。

Go语言是以C语言为原型的,所以也被称为21世纪C语言。

大名鼎鼎的Docker从推出开始,就被各大公司广泛的应用在云计算、云存储领域,而Docker完全使用Go语言实现的。七牛云是国内第一个核心服务完全采用Go语言实现的云产品。2017年8月28日七牛云完成了新一轮10亿人民币的融资,本轮融资由阿里巴巴集团和云锋基金领投。仅仅从以上两个典型的例子来看,Go语言确实已经成为云计算、云存储时代最重要的基础编程语言。

2 Go的主要特点

1) 语法简洁

共25个关键字,与C语言一样,拥有简洁的语法。

2) 内置对并发的支持

语言级别的支持并发处理,更加适合高并发和集群化的互联网时代。

3) 提供垃圾回收机制

这也是与C语言的重要区别,避免了c/c++程序员经常所面临的内存泄漏问题

4) 采用组合,摒弃继承

Go语言采用组合的方式实现面向对象的编程,这样就避免了传统的面向对象编程语言由于继承带来的复杂性。Java之父詹姆斯·高斯林在一次采访时曾说,如果让他重新设计Java语言,他会抛弃继承。

5) 非侵入式接口编程

在Java和C#等面向对象编程中,为了实现一个接口,子类都需要从该接口继承,并需要导入定义接口的包。在Go语言中,无需从接口继承,只要实现该接口中定义的方法即可,也就无需导入定义接口的包。

6) 良好的项目管理

Go命令行工具彻底的消除了项目文件的概念,完全用目录结构和包名来推导项目结构和构建顺序。而且自动检查没有使用的包,提高编译速度。

7) UTF-8编码支持

原生态的支持UTF-8编码。任何字符都可以直接输出,甚至可以用UTF-8中的任何字符作为标识符。

总之,作为一门年轻的语言,Go适应时代发展的需要,既博采众家之长,又极力维持语言的简洁。

3 Go作者

Go语言由Google公司的肯·汤普逊 、罗布·派克、罗伯特·格瑞史莫 三位大牛于2007年9月开始设计和实现,于2009年11月对外正式发布。

² Thompson:1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言。

² Rob Pike:曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8 字元编码。

² Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。

新的语言层出不穷,老的语言也在推出新的特性,哪些语言可以脱颖而出?有人戏言,语言进入“拼爹”时代,从这个角度看,Go的背景还是很强大的。

最新文章

  1. Matlab学习笔记(一)—— 三维图形绘制
  2. lamp php的ssl,ssh支持
  3. HTML DOM与XML DOM之间,既有区别
  4. win/linux 下使用 psutil 获取进程 CPU / memory / IO 占用信息
  5. Luogu_1565_牛宫_(最大子矩阵)
  6. Carthage的安装和使用
  7. 网络基础之IP地址与子网划分
  8. remap.config文件配置模板
  9. Python 破解带密码保护的Zip文件
  10. LeetCode之旅(16)-Climbing Stairs
  11. 使用padding后内容超出父级元素
  12. Oracle查看表实际占用空间和实际行数
  13. C# 在Word中添加表格的方法
  14. LD的-rpath,-rpath-link
  15. 深入理解SpringBoot之启动探究
  16. What do cryptic Github comments mean?
  17. 初步认识 LESS,我要开始学习LESS啦!
  18. 一个钓鱼WiFi的破解
  19. [Tools]SurveyMonkey
  20. Objective-C 之category

热门文章

  1. 简单理解OpenGL模型视图变换
  2. 在线安装eclipse中html/jsp/xml editor插件(很可靠)
  3. android.app.Activity 的介绍
  4. 超详细 值得收藏 linux CentOS 7 配置Apache服务【转发+新增】
  5. 【ANT】时间戳
  6. 【java】多线程同步死锁
  7. 【JMeter】JMeter代码里若有外部自定义方法调用需要写进方法体里,否则报错
  8. 【python】入门:打印字符串、简单计算
  9. ES6初体验
  10. KVO的内部实现以及使用