初识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以前主要是用汇编语言写的,它奠定了操作 ...
随机推荐
- JS 特殊字符的验证的问题
个人的JS 的收集方便下次的使用做百度查询: 1. 特殊字符的验证: var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].&l ...
- 第三方页面嵌入到web项目的方案 之 使用iframe嵌入
有些项目中可能会遇到这样的需求, 需要在一个项目中嵌入其他的项目的页面或者功能.并且需要这两个页面之间能够进行交互. 本文主要介绍如何实现这种第三方应用的嵌入, 主要有以下几个方向: 1.iframe ...
- WPF: 深入理解 Weak Event 模型
在之前写的一篇文章(XAML: 自定义控件中事件处理的最佳实践)中,我们曾提到了在 .NET 中如果事件没有反注册,将会引起内存泄露.这主要是因为当事件源会对事件监听者产生一个强引用,导致事件监听者无 ...
- 如何在Centos 7上用Logrotate管理日志文件
何为Logrotate? Logrotate是一个实用的日志管理工具,旨在简化对系统上生成大量的日志文件进行管理. Logrotate允许自动旋转压缩,删除和邮寄日志文件,从而节省宝贵的磁盘空间. L ...
- configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
Apache在2.4版本以后,编译时: # ./configure \ --prefix=/usr/local/apache2 \ --with-included-apr \ --enable-so ...
- centos7使用docker部署gitlab-ce-zh应用
1.国内拉取镜像比较慢,所以这里采用DaoCloud源. # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http ...
- Spring框架系列(二)之Bean的注解管理
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Spring中的两种容器 在系列(一)中我们已经知道,Spring 是管理对象的容器,其中有 ...
- C#委托与事件--简单笔记
委托 简单记录点东西 适合似懂非懂的朋友看看 委托类型用来定义和响应应用程序中的回调. 借此可以设计各种有面向对象特性的代码模式.下面要说的事件在我看来就是委托的一种实现,再深一步讲,利用委托加事件, ...
- SpringMVC+FreeMarker实现静态资源文件自动添加版本号(md5)
近日切换java开发,开始学习springframework.在实现静态资源文件自动计算版本号的实例时,因为不熟悉框架,走了不少弯路,好在最终解决了问题.这里写篇文章记录一下实现,也希望对大家有些用处 ...
- idea出现Error:Maven Resources Compiler: Maven project configuration required for module 'market' isn't available.
idea出现如下错误解决办法 1.重新在Build-Rebuild project 既可以解决啦