hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

你好,Go言语

2019-11-18杂谈搜奇网20°c
A+ A-

本文是「vangoleo的Go言语进修笔记」系列文章之一。
官网: http://www.vangoleo.com/go/hello-golang/

我在2015年第一次打仗Go言语,完成了Hello World,随后也一向在关注这门新言语。至今,Go言语生长已过去十年多了,愈来愈遭到宽大开辟者的关注,而且跟着云原生、IoT、区块链的盛行,Go好像要成为21世纪的第一言语。Docker、Kubernetes、以太坊等重量级的项目都是基于Go开辟。

Go言语是Google公司在2009年开源的一门高等编程言语,它为处置惩罚大型体系开辟历程当中的现实题目而设想,支撑并发、范例一致、简朴文雅,机能壮大,被很多Go言语传道者誉为“云盘算时期的C言语”。

近期,我在体系地进修Go言语,并整理了一些进修笔记。后续会和人人举行分享。本日先和人人聊聊Go言语的生长史和Go言语的特征。

Go的定名


这是一封由Rob Pike在2007年9月25日,下昼3:12发送给Robert Griesemer和Ken Thompson的有关编程言语议论主题的邮件,邮件正文大意为:

我在开车回家的路上得到了些灵感:

  • 给这门编程言语取名为“go”,它很简短,易誊写。
  • 东西类可以定名为:goc、 gol、goa。
  • 交互式的调试东西也可以直接定名为“go”。
  • 言语文件后缀名为 .go 等等。

和很多巨大的公司诞生于车库一样,Go言语的定名也和汽车有关。以上就是Go言语名字的泉源。我个人是很喜好Go这个定名的,看似很随便的一个主意,却很精准。有着Google的纯粹血缘,又表现了言语简朴,文雅的特征。而且Go内里开启一个协程的关键字就是go。

谷歌工程师的20%时候

自此以后Robert、Rob和Ken三个人最先在Google内部举行了研发,一向到了2009年,Go正式开源了,Go项目团队将2009年11月10 日,即该言语正式对外开源的日字作为其官方生日。源代码最初托管在http://code.google.com上,以后几年才逐渐的迁移到 GitHub上。
谷歌的“20%时候”工作体式格局,许可工程师拿出20%的时候来研讨本身喜好的项目。语音效劳Google Now、谷歌消息Google News、谷歌舆图Google Map上的交通讯息等,全都是20%时候的产品。
Go言语最最先也是20%时候的产品。

Go言语的三位创始人

邮件中提到的就是Go言语最重要的3位创始人:

让我们来认识一下这3位大佬:

  • Rob Pike:曾是贝尔实验室Unix开辟团队成员,Plan9操纵体系开辟的重要领导人,Inferno操纵体系开辟的重要领导人。
  • ken tomption:图灵奖得主,C言语前身B言语的作者,Unix的发明人之一,操纵体系Plan 9的重要作者。 共同开辟了UTF-8。
  • Robert:曾为谷歌的V8 JavaScript引擎和Chubby开辟代码。

Go言语血缘

编程言语的生长,和物种进化类似。每种编程言语都邑从先前的言语吸收英华,再举行立异和革新。下图展现了Go从它的先辈们继续了哪些长处,Go恰是站在这些伟人的肩膀上,在云时期,发挥愈来愈大的作用。

Go言语从先辈们继续的特征:

  • C言语:Go言语有时候被形貌为“C类似言语”,或许是“21世纪的C言语”。Go从C言语继续了类似的表达式语法、掌握流构造、基本数据类型、挪用参数传值、指针等很多头脑,另有C言语一向所看中的编译后机器码的运转效力以及和现有操纵体系的无缝适配
  • Pascal:但是在Go言语的家属树中另有别的的先人。个中一个有影响力的分支来自Niklaus Wirth所设想的 Pascal)言语。然后Modula-2言语激发了包的观点。然后Oberon)言语摒弃了模块接口文件和模块完成文件之间的区分。第二代的Oberon-2)言语直接影响了包的导入和声明的语法,另有Oberon)言语的面向对象特征所供应的要领的声明语法等。
  • CSP:Go言语的另一支先人,带来了Go言语区分其他言语的重要特征,灵感来自于贝尔实验室的Tony Hoare于1978年宣布的鲜为外界所知的关于并发研讨的基本文献,递次通讯历程(communicating sequential processes ,缩写为CSP)。在CSP中,顺序是一组中心没有同享状况的平行运转的处置惩罚历程,它们之间运用管道举行通讯和掌握同步。不过Tony Hoare的CSP只是一个用于形貌并发性基本观点的形貌言语,并非一个可以编写可实行顺序的通用编程言语。Go言语运用管道在协程进举行通讯

重量级运用

以下是枚举的一些Go言语的重量级运用:

Go的长处

假如现实天下须要我可以在几天内对一个生产体系举行原型设想、测试和布置,而且在每秒能处置惩罚比本来多5倍要求,CPU和内存的开支还都很小。我想也许只要Go言语可以胜任了。

Go言语有以下长处:

  • 零丁的二进制宣布:Go项目编译会生成一个静态的可实行文件。该文件可自力运转而不须要其他依靠。这类体式格局迥殊适合于云原生容器环境。
  • 交织编译:在任何操纵体系上都可以编译在其他平台上可运转的二进制文件。比如在Mac体系上可编译出在Linux和Windows上可运转的二进制文件。
  • 垃圾接纳:Go言语支撑垃圾接纳。相比较,C++,Rust等须要开辟者本身掌握。
  • 实行机能:Go非常的快。机能接近于C++。远高于Java,Python、Node。
  • 开辟效力:Go言语同时具有静态言语的运转机能和动态言语的开辟效力。
  • 简朴,高效:Go言语的设想哲学里就包含了简朴和高效。一个典范的反例就是庞杂,痴肥的Java言语。
  • 并发性:言语层面支撑并发,经由过程协程和通道简化并发开辟,进步并发机能。
  • 雄厚的规范库:Go规范库覆盖了文本,IO,收集,加密,Web效劳,长途RPC,模板引擎等功能。
  • 可以挪用C言语:可以挪用C言语函数,进一步优化机能,复用C言语巨大的生态体系。
  • 疾速编译时候:Go的编译迥殊快。人人可以参考两款静态博客生成体系,Hexo(Node开辟)和Hugo(Go开辟)。
  • 工程型:Go言语设想的目标就是成为一门工程言语,处置惩罚现实的工程题目。Go言语定义了开辟范例,并供应了雄厚的东西。运用Go言语可以编写出轻易浏览和明白,轻易测试、保护和扩大的顺序。

Go瑕玷

  • 缺乏重量级框架。如Ruby的Rails,Python的Django,Java的Spring。
  • 错误处置惩罚:没有非常体系。Go官方正在处置惩罚该题目。
  • 软件包治理:很长时候以来,Go官方都没有一套软件包治理体制。直到近来,Go的1.13版本正式引入了Go Module作为官方的依靠治理东西。
  • 不是规范的面向对象的编程模子:这个也是Go言语的一个立异。假如你是坚固的OOP的拥护者,可能会有些不适应。

文明

人们说,每当你进修一门新的白话时,你也会沉醉在说这类言语的人的某些文明中。因而,您进修的言语越多,您可能会有更多的变化。
编程言语也是云云。不管您未来怎样运用新的编程言语,它总能给你带来新的编程视角或某些迥殊的手艺。
不管是函数式编程,形式婚配照样原型继续,一旦你学会了它们,你就可以随身携带这些编程头脑,这扩大了你作为软件开辟人员所具有的题目处置惩罚东西集。它们也改变了你浏览高质量代码的体式格局。
而Go在这方面有一项了不得的财产。Go文明的重要支柱是坚持简朴,踏踏实实的代码,而不会发生很多冗余的笼统观点,并将可保护性放在首位。大部分时候消费在代码的编写工作上,而不是在修补东西和环境或许挑选差别的完成体式格局上,这也是Go文明的一部分。
Go文明也可以总结为:“应该只用一种要领去做一件事,并坚持简朴,高效”

一点注意事项。当你须要构建相对庞杂的笼统代码时,Go通常会阻碍你。好吧,我会说这是简朴的衡量。

本文由 www.vangoleo.com 宣布

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
你好,Go言语

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/281998.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>