初识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以前主要是用汇编语言写的,它奠定了操作 ...
随机推荐
- 洛谷 [P2590] 树的统计
迷之TLE #include <iostream> #include <cstdio> #include <cstring> #include <algori ...
- manacher 模板
求最长回文子序列的 O(n)做法 讲解 #include <iostream> #include <cstdio> #include <algorithm> #in ...
- JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要 ...
- 在 Mac 中安装 MySQLdb (Python mysql )
安装环境:OS X操作系统,Python 2.7.3. MySQLdb其实包含在MySQL-python包中,因此无论下载还是在pip中search,都应该是搜寻MySQL-python. 以下将说明 ...
- linux下简洁优化部署tomcat应用
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本文是自己根据公司架构部署tomcat方法整理出来的文本 修 ...
- ASP.NET Core的身份认证框架IdentityServer4--(3)令牌服务配置访问控制跟UI添加
使用密码保护API OAuth 2.0 资源所有者密码授权允许一个客户端发送用户名和密码到IdentityServer并获得一个表示该用户的可以用于访问api的Token. 该规范建议仅对" ...
- [翻译]【目录】编写高性能 .NET 代码
本篇是 Writing High-Performance .NET Code 的目录索引,翻译内容不定时更新,目录也会同步修改. 性能测量及工具 选择什么来衡量 平均数vs百分比 工具介绍 Visua ...
- PHP - curl实现采集
1.开启curl支持 由于php环境安装后默认是没有打开curl支持的,需修改php.ini文件,找到;extension=php_curl.dll,把前面的冒号去掉,重启服务即可: 2.使用curl ...
- the c programing language 学习过程3
ControlFlow 控制流 specify 指定 compound statement 复合语句 cryptic有隐含意义的 ambiguity歧义 robust稳健 disintegratio ...
- 剑指offer 第一个只出现一次的字符 hash
思路:i表示字符的ASCII码值,cntp[i]表示字符出现的次数. AC代码 class Solution { public: int FirstNotRepeatingChar(string st ...