一、Go语言的主要特性:

①    开放源代码的通用计算机编程语言。开放源代码的软件(以下简称开源软件)更容易被修正和改进。

②    虽为静态类型、编译型的语言,但go语言的语法却趋于脚本化,非常简洁。

③    卓越的跨平台支持,无需移植代码。这里的跨平台主要是指计算架构和操作系统。

④    全自动的垃圾回收机制,无需开发者干预。Go语言程序在运行过程中的垃圾回收工作由go语言运行时系统负责。

⑤    原生的先进并发编程模型和机制。Go语言拥有自己的独特并发编程模型,其组成部分有Goroutine(也可称为Go程)和Channel(也可称为通道)等。

⑥    拥有函数式编程范式的特性,函数为一等代码。Go语言支持多种编程风格,包括面向对象编程和函数式编程。而对函数式编程的最有利的支撑就是Go语言将函数类型视为了第一等类型。

⑦    无继承层次的轻量级面向对象编程范式。Go语言中的接口与实现之间完全是非侵入式的。

⑧    内含完善、全面的软件工程工具。Go语言自带的命令和工具相当的强大。

⑨    代码风格强制统一。

⑩    程序编译和运行速度都非常快。

⑪    标准库丰富、及适合开发服务端和web程序。

二、Go语言的优劣

①相对于C/C++来讲,Go语言拥有清晰的依赖管理和全自动的垃圾回收机制,因此其代码量大大降低,开发效率大大提高。

②相对于Java来讲,Go语言拥有简明的类型系统,函数式编程模型。因此其代码块更小更简明、可重用性更高,并可在多核计算环境下更快的运行。

③对于PHP来讲,Go语言更具有通用性和规范性。这使得其更适合构建大型的软件,并能够更好的将各个模块组织在一起。在性能方面,PHP不可与Go同日而语。

④对于Python、Ruby来讲,Go的优势在于其简明的语法、非侵入式和扁平化的类型系统和浑然天成的多范式编程模型。与php一样,Python和Ruby是动态类型的解释型语言,这就意味着他们的运行速度会比静态类型的编程语言慢很多。

总而言之,Go语言对于当前大多数主流语言来讲,最大的优势在于具有较高的生产效率、现金的依赖管理和类型系统,以及原生的并发计算支持。因此,Go语言自发布以来就收到了各个领域开发者的关注和青睐。现在,我们来客观的看一下目前go语言需要加强或改进的地方

①    从分布式计算角度来看,go语言的成熟度不及erlang(现在已经出现了一些这方面的go语言代码包,我们已经可以看到光明的未来了)

②    从程序运行速度的角度来看,go语言虽然与Java不相上下,但还不及C(差距上正在不断缩小)

③    从第三方库的角度来看,go语言的库数量还远远不及其他几门主流语言(比如Java、Python、Ruby等)。不过与go语言的年纪相比,用它实现的第三方库已经相当多了,并且他们的数量在持续的增长中。

另外,在更深的层面,go语言标准库中也有些不尽如人意的地方。具体如下。

①    从语法角度来看,go语言语法的语法糖并不多。另外,变量赋值方式多的有点儿累赘了。

②    从并发的角度来看,go语言提供的并发模型很强大,但也有一些编写规则需要了解。否则,容易踩进“坑里”。

虽然go语言还有一些瑕疵,但从整体来看,他已经是一门非常优秀的通用编程语言了。并且,go语言在今后的发展上会关注性能、可靠性、可移植性和一些功能增强。

初识Go语言的更多相关文章

  1. 初识 go 语言:方法,接口及并发

    目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...

  2. 初识 go 语言:数据类型

    目录 数据类型 指针 结构体 数组 切片 切片的方法 映射 函数闭包 结束语 前言: go语言的第三篇文章,主要讲述go语言中的数据类型,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示 ...

  3. 初识 go 语言:语法

    目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...

  4. 初识 go 语言

    目录 go简介 安装 hello world 函数 变量 常量 可见性规则 结束 前言: 最近组内要试水区块链,初步方案定为使用fabirc来弄,而fabric的智能合约就是用go写的,借此机会正好学 ...

  5. 《Go并发编程实战》读书笔记-初识Go语言

    <Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...

  6. 第二百五十八节,Tornado框架-逻辑处理get()方法和post()方法,初识模板语言

    Tornado框架-逻辑处理get()方法和post()方法,初识模板语言 Tornado框架,逻辑处理里的get()方法,和post()方法 get()方法,处理get方式的请求post()方法,处 ...

  7. 01_初识C语言

    第一章 - 初识C语言 基本了解C语言的基础知识,对C语言有一个大概的认识. 每个知识点就是简单认识,不做详细讲解. 1. 什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的 ...

  8. 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言

    对于D语言,相信很多朋友还没听说过,因为它还不够流行,跟出自名门的一些语言比起来也没有名气,不过这并不影响我对它的偏爱,我就是这样的一种人,我喜欢的女孩子一定是知己型,而不会因为她外表,出身,学历,工 ...

  9. 第一、初识C语言

    1·C语言强大而灵活,如python,LISP,FORTRAN,Perl,Logo,BASIC,PASACAL的编译器和解释器都是C语言编写的. 2·C语言的指针错误往往难以察觉,但这恰好告诉我们,一 ...

  10. 初识C语言

    C语言是开发iOS软件的基础. 一.C语言简介 1.      简史 1)          C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作 ...

随机推荐

  1. 为MySQL选择合适的备份方式[转]

    原文链接:http://nettedfish.sinaapp.com/blog/2013/05/31/choose-suitable-backup-strategy-for-mysql/ 数据库的备份 ...

  2. bzoj 4827: [Hnoi2017]礼物 [fft]

    4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...

  3. iOS 9 HTTPS 的配置

    方法有两种: (1)废话少说直接上图: (2)右击info.plist 文件 open as ->source code 在里面注入如下代码就行了(位置不固定,但要在指定的文件夹选项里) < ...

  4. Activiti 中的ACT_RU_TASK表中的EXECUTION_ID和PROC_INST_ID区别

    当你的流程图为单向的时候则EXECUTION_ID和PROC_INST_ID是一样的 这种的流程图的话是一样的 这种的话就到支流是不一样的由于在节点处进行了分支,导致这个有三个方案.导致里面的分支分离 ...

  5. 箱型图boxplot函数的使用

    主要参数: medlwd:设置中位线宽度 whiskcol:设置虚线颜色 staplecol:设置顶端颜色 outcol:离群值颜色 相应的具体位置: outline=FALSE:去除离群值 outp ...

  6. PHP文件头BOM头问题

    前几天我们公司服务器出现了一个离奇的问题,服务器与本地文件代码完全一致,本地运行正常,到了测试环境服务器之后,各种问题一个又一个浮现,先是后台验证码不显示,以为是session写入失败,又是怀疑gd库 ...

  7. Asp.Net Core 2.1+的视图缓存(响应缓存)

    响应缓存Razor 页与 ASP.NET 核心 2.0 中不支持. 此功能将支持ASP.NET 核心 2.1 版本. 在老的版本的MVC里面,有一种可以缓存视图的特性(OutputCache),可以保 ...

  8. qml 静态编译程序执行错误 无法定位程序输入点 CreateDXGIFactory2 于动态链接库 dxgi.dll 上

    重新编译 qt 静态库即可,或 删除该动态库. -no-feature-d3d12 解决方案请参考如下网址: https://forum.qt.io/topic/78380/entry-point-n ...

  9. qt 使用msvc编译器出现乱码如何解决?字符串中存在空格?

    开发环境: 1.win7 64位 2.qt版本 windows-x86-msvc2015-5.9.0 如何解决? 1.设置qt文件编码 设置 默认UTF-8 如果编码是 UTF-8 则添加. 2.使用 ...

  10. POJ1459 - Power Network

    原题链接 题意简述 原题看了好几遍才看懂- 给出一个个点,条边的有向图.个点中有个源点,个汇点,每个源点和汇点都有流出上限和流入上限.求最大流. 题解 建一个真 · 源点和一个真 · 汇点.真 · 源 ...