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的背景还是很强大的。

go语言 前言的更多相关文章

  1. 关于C语言指针的一些新认识(1)

    Technorati 标签: 指针,数组,汇编,C语言 前言 指针是C语言的精华,但我对它一直有种敬而远之的感觉,因为一个不小心就可能让你的程序陷入莫名其妙的麻烦之中.所以,在处理字符串时,我总是能用 ...

  2. Java开发快速上手

    Java开发快速上手 前言 1.我的大学 2.对初学者的建议 3.大牛的三大特点 4.与他人的差距 第一章 了解Java开发语言 前言 基础常识 1.1 什么是Java 1.1.1 跨平台性 1.2 ...

  3. 各种编程语言忽略http的SSL证书认证

    目录 前言 代码 go语言 Python语言 Ruby语言 Java语言 PHP语言 C#语言 前言 我们内部测试的http服务器很多时候证书都是没有经过第三方认证的,我们发送http请求基本上都是忽 ...

  4. 1-学习前言&C语言概述

    [C语言]01-学习前言&C语言概述 参考自 http://www.cnblogs.com/mjios/archive/2013/03/12/2956508.html#label2 C语言是我 ...

  5. 基于visual Studio2013解决C语言竞赛题之前言

    前言:关于VS2013 刚装完VS2013,新的IDE给人全新的编程体验,界面比以前更急简洁漂亮,不多说了,先上图吧 第一次启动VS2013

  6. 研究实验1_搭建一个精简的C语言开发环境(包含部分经典的前言)

    综合研究:      在这部分内容中,将启示我们如何进行独立研究和深度思考(一定要注意这一点,相应的调整自己的学习思想).同时使我们:          (1)认识到汇编语言对于深入理解其他领域知识的 ...

  7. 【前言】Go语言开坑

    很早之前就已经听过Go语言的大名,今天终于要开坑研究Go了,来吧看看<Go语言从入门到入坟>. [Go语言学习目录] 1. Go安装 2. Go变量(Variables) 3. Go语言基 ...

  8. [日常] Go语言圣经前言

    https://books.studygolang.com/gopl-zh/ go语言圣经 1.Go语言有时候被描述为“C类似语言”,或者是“21世纪的C语言”. 2.Go语言中和并发编程相关的特性是 ...

  9. R语言学习(一)前言

    本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49768161 R是一个有着统计分析功能 ...

随机推荐

  1. 11g使用非duplicate方式创建物理standby要注意的问题总结

    在上篇博文中,使用了duplicate方式来创建物理standby http://blog.csdn.net/aaron8219/article/details/38434579 今天来说说在11g中 ...

  2. Bayan 2015 Contest Warm Up D题(GCD)

    D. CGCDSSQ time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  3. 一个简单的双向链表(C++实现)

    直接上代码,亲测有用. #ifndef __DLINK_H__ #define __DLINK_H__ /* [phead] -> [index0] -> [index1] -> [ ...

  4. cookie和session(一)

    先来谈谈我对session和cookie的理解,事实上,只要你去面试web开发,面试官十有八九会问这个问题. cookie和session经常被放在一起问,其实在我看来这两个东西完全是两个不一样的. ...

  5. FastDFS并发会有bug,其实我也不太信?- 一次并发问题的排查经历

    前一段时间,业务部门同事反馈在一次生产服务器升级之后,POS消费上传小票业务偶现异常,上传小票业务有重试机制,有些重试三次也不会成功,他们排查了一下没有找到原因,希望架构部帮忙解决. 公司使用的是Fa ...

  6. mybatis的#{}占位符和${}拼接符的区别

    #{}占位符:占位 如果传入的是基本类型,那么#{}中的变量名称可以随意写 如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性- ${}拼接符:字符串原样拼接 如果 ...

  7. 合并查询结果集UNION(去重), UNION ALL(不去重),INTERSECT(交集),MINUS(差集,第一个结果集减去第二个结果集,第一个结果集中不在第二个结果集中的记录行),[NOT] EXIST

    MINUS配合[NOT] EXIST使用可以查询出包含符合某个条件的多记录的其他记录, 举例: 顾客A买了商品2.4.6 顾客B买了商品1.2.4 顾客C买了商品4.6 顾客D买了商品1.2.4.6 ...

  8. JavaScript基础2——关于变量

    变量的声明                            变量的定义:使用var关键字来声明,区分大小写的.注意:不用var,会污染全局变量.        变量的命名规范是:字母,数字,$符 ...

  9. bzoj 2565: 最长双回文串

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba",不相同).输入 ...

  10. 3.sass的数据类型与函数

    数据类型 在sass里有数字.字符串.列表.颜色等类型 在cmd里 输入 sass -i 就会进入到交互模式,输入的计算可以马上得到结果 type-of()可以用来得到数据类型,如: type-of( ...