初识Go语言
一、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语言的更多相关文章
- 初识 go 语言:方法,接口及并发
目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...
- 初识 go 语言:数据类型
目录 数据类型 指针 结构体 数组 切片 切片的方法 映射 函数闭包 结束语 前言: go语言的第三篇文章,主要讲述go语言中的数据类型,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示 ...
- 初识 go 语言:语法
目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...
- 初识 go 语言
目录 go简介 安装 hello world 函数 变量 常量 可见性规则 结束 前言: 最近组内要试水区块链,初步方案定为使用fabirc来弄,而fabric的智能合约就是用go写的,借此机会正好学 ...
- 《Go并发编程实战》读书笔记-初识Go语言
<Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...
- 第二百五十八节,Tornado框架-逻辑处理get()方法和post()方法,初识模板语言
Tornado框架-逻辑处理get()方法和post()方法,初识模板语言 Tornado框架,逻辑处理里的get()方法,和post()方法 get()方法,处理get方式的请求post()方法,处 ...
- 01_初识C语言
第一章 - 初识C语言 基本了解C语言的基础知识,对C语言有一个大概的认识. 每个知识点就是简单认识,不做详细讲解. 1. 什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的 ...
- 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
对于D语言,相信很多朋友还没听说过,因为它还不够流行,跟出自名门的一些语言比起来也没有名气,不过这并不影响我对它的偏爱,我就是这样的一种人,我喜欢的女孩子一定是知己型,而不会因为她外表,出身,学历,工 ...
- 第一、初识C语言
1·C语言强大而灵活,如python,LISP,FORTRAN,Perl,Logo,BASIC,PASACAL的编译器和解释器都是C语言编写的. 2·C语言的指针错误往往难以察觉,但这恰好告诉我们,一 ...
- 初识C语言
C语言是开发iOS软件的基础. 一.C语言简介 1. 简史 1) C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作 ...
随机推荐
- HDU2089 不要62 BZOJ1026: [SCOI2009]windy数 [数位DP]
基础题复习 这次用了dfs写法,感觉比较好 #include <iostream> #include <cstdio> #include <cstring> #in ...
- POJ 3621 Sightseeing Cows [最优比率环]
感觉去年9月的自己好$naive$ http://www.cnblogs.com/candy99/p/5868948.html 现在不也是嘛 裸题,具体看学习笔记 二分答案之后判负环就行了 $dfs$ ...
- BZOJ 3040: 最短路(road) [Dijkstra + pb_ds]
3040: 最短路(road) Time Limit: 60 Sec Memory Limit: 200 MBSubmit: 2476 Solved: 814[Submit][Status][Di ...
- 跨域资源请求(除jsonp以外)的方法
---------------------------------------------------------------------------------------------------- ...
- XSD详解三 - 复合元素+总结篇
一.复合元素介绍 1.什么是复合元素? 复合元素指包含其他元素及/或属性的 XML 元素. 有四种类型的复合元素: 空元素 包含其他元素的元素 仅包含文本的元素 包含元素和文本的元素 注释:上述元素均 ...
- CSS学习(一)---使用CSS的四种方式
1. 行内样式 例: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- java实现二叉树的前中后遍历(递归和非递归)
这里使用下图的二叉树作为例子: 首先建立树这个类: public class Node { private int data; private Node leftNode; private Node ...
- 【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)
一.搜索二叉树的插入,查找,删除 简单说说搜索二叉树概念: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少分配率, 最重要的规则,缩短对象的生命周期,减少对象层次的深度,减少对象之间的引用,避免钉住对象(Pinning)
减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少GC回收时的压力,同时降低了内存碎片与CPU的使用量.你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突. 你需要在设计对象时仔细检 ...
- PHP秒杀系统全方位设计(一)
秒杀系统特点人多商品少时间短流量高外挂机器[黄牛和非黄牛] 技术分析瞬间高并发的处理能力多层次的分布式处理能力人机交互与对抗[12306验证码图片] 技术选型分析Linux+Nginx+PHP+Mys ...