Go:简介和特点


前言

随便聊聊:大概是2018年左右开始接触到Go语言,相比于早年入行Go语言开发的大佬们来说不是很早,本人是从C++、Python的基础上转到Go语言开发,还算比较顺利。刚入行的时候主要使用的语言是C/C++,C++懂的都懂,被隔壁的Java摩擦多年,虽高效,但对开发者来说可不是件幸福的事;后来以Python为代表的解释性语言开始爆发,上手了Python之后一度不想用回C++,直到18年上手Go,总算“翻身码农把歌唱”。这里想对我了解到的Go做一个分享,后续会按照Go的模块和实例来介绍


提示:以下是本篇文章正文内容,有错误的地方欢迎大家指正!也欢迎大家转载分享!

一、Go是什么?

Go是一门非常年轻的语言,07年起源于谷歌,09年对外开源,12年才发布第一个对外版本Go 1.0,有关Go的起源轶事感兴趣的同学可以私下去了解一下;现在主流的编程语言大概有10几种,从1945年第一台计算机诞生至今,程序员们一直致力于怎样让计算机更准确高效地了解人类想要它们完成的任务,所谓编程就是架起人和机器之间的桥梁,现代工业让计算机算力越来越强,为了和计算机沟通更方便,这些年出现的语言轻量,高效,安全是主流方向。Go语言作为后起之秀,主要目标就是“兼顾Python等动态语言的开发速度和C/C++等编译型语言的性能和安全性”。

二、和同行的对比

有关“谁是最好的编程语言?”这个论题在各大论坛上一直是争论不休,从业人员其实也都知道,没有最好的语言,也没有最通用的框架,抛开业务场景谈能力都是耍流氓,这里简单的将Go语言横向的和其他语言进行对比,无意褒贬,意在突出Go语言本身的优劣。

1、语言的分类

按照语言的发达程度可以分类为:
a.机器语言:

机器语言顾名思义就是不需要翻译机器就能看懂的语言,也就是通常我们理解的”0“和”1“,人类很难识别和记忆,但机器硬件很容易明白。

b.汇编语言:

汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

有关汇编语言和GO语言的关系后面会单独讲解。

扫描二维码关注公众号,回复: 12613970 查看本文章

c.高级语言:

前面两类都属于低级语言,所谓高级语言就是更符合人类思维方式的语言,经过翻译最终转化为能够被机器识别的机器语言,高级语言里也有很多细分的标准,比如:

1、”面向类“的高级编程语言和”面向对象“的高级编程语言;
2、编译型高级编程语言(C/C++,Java等)和解释型高级编程语言(JavaScript,Python等);
3、强类型语言(静态语言 C/C++,Java等)和弱类型语言(动态语言,PHP,JavaScript,Python等)


2、Go语言的特点

Go语言可以说迄今为止编程语言的集大成者,Go语言是为了适应当今多核计算和高并发网络请求场景而诞生的语言,除去静态语言和动态语言一些本身的差异,我们来看看Go本身的特色:

  • Go和其他面向对象的高级语言存在巨大差异,首先Go没有类的概念,也就不存在子类继承父类的关系,也没有构造函数和析构函数,也没有默认参数,没有运算符重载。
  • Go语言自身支持并发操作,这也是Go最大的亮点,goroutine的存在使得Go从底层原生支持并发运行,后面会单独聊聊goroutine的原理和实现。
  • Go语言不需要单独对异常进行处理,而是将异常作为参数返回,这也是Go的语言风格。
  • Go本身是一种静态语言,但Go也支持运行时动态类型。
  • Go也具备动态语言的特色,内置runtime,支持自动垃圾回收,不需要开发者单独对内存进行操作。
  • Go对未使用的变量和包会在编译的时候报错。
  • 关于Go的其他的一些语法特色后面再结合代码详细聊,比如Go自带fmt修正编码规范,Switch语法无需default等等。

关于Go的特点会在接下来的文章里给大家详细介绍,这里做个简单的对比:
在这里插入图片描述

3、Go语言的优势

  • 相比于C/C++,Go语言拥有清晰的依赖管理和全自动的垃圾回收机制,因此其代码量大大降低,开发效率大大提高。
  • 相对于 Java 来讲,Go语言拥有简明的类型系统、函数式编程范式和先进的并发编程模型。因此其代码块更小更简洁、可重用性更高,并可在多核计算环境下更快地运行。
  • 对于 PHP 来讲,Go语言更具通用性和规范性。这使得其更适合构建大型的软件,并能够更好地将各个模块组织在一起。在性能方面,PHP 不可与 Go 同日而语。
  • 对于 Python/Ruby 来讲,Go 的优势在于其简洁的语法、非侵入式和扁平化的类型系统和浑然天成的多范式编程模型。与 PHP 一样,Python 和 Ruby 也是动态类型的解释型语言,这就意味着它们的运行速度会比静态类型的编译型语言慢很多。

总而言之,Go语言对于当前大多数主流语言来讲,最大的优势在于具有较高的生产效率、先进的依赖管理和类型系统,以及原生的并发计算支持。

总结

本文主要介绍了Go的一些特点,个人还是很推荐大家多了解了解Go语言的,越来越多的大厂都已经或者逐步向Go在迁移,对于还在探索选择一门入门语言的同学Go是一门兼顾简单和性能的语言,而且前景也广阔。
后续:后面会更多的通过代码来跟大家聊聊Go的开发,大家有感兴趣关于Go的方面的知识也可留言,后面也会陆续分享。

猜你喜欢

转载自blog.csdn.net/shirnyhelloworld/article/details/114226239