为什么要使用 Go 语言?Go 语言的优势在哪里

Python016

为什么要使用 Go 语言?Go 语言的优势在哪里,第1张

已经有好多程序员都把Go语言描述为是一种所见即所得(WYSIWYG)的编程语言。这是说,代码要做的事和它在字面上表达的意思是完全一致的。 在这些新语言中,包含D,Go,Rust和Vala语言,Go曾一度出现在TIOBE的排行榜上面。与其他新语言相比,Go的魅力明显要大很多。Go的成熟特征会得到许多开发者的欣赏,而不仅仅是因为其夸大其词的曝光度。下面我们来一起探讨一下谷歌开发的Go语言以及谈谈Go为什么会吸引众多开发者: 快速简单的编译 Go编译速度很快,如此快速的编译使它很容易作为脚本语言使用。关于编译速度快主要有以下几个原因:首先,Go不使用头文件;其次如果一个模块是依赖A的,这反过来又取决于B,在A里面的需求改变只需重新编译原始模块和与A相依赖的地方;最后,对象模块里面包含了足够的依赖关系信息,所以编译器不需要重新创建文件。你只需要简单地编译主模块,项目中需要的其他部分就会自动编译,很酷,是不是? 通过返回数值列表来处理错误信息 目前,在本地语言里面处理错误的方式主要有两种:直接返回代码或者抛异常。这两种都不是最理想的处理方式。其中返回代码是非常令人沮丧的,因为返回的错误代码经常与从函数中返回的数据相冲突。Go允许函数返回多个值来解决这个问题。这个从函数里面返回的值,可以用来检查定义的类型是否正确并且可以随时随地对函数的返回值进行检查。如果你对错误值不关心,你可以不必检查。在这两种情况下,常规的返回值都是可用的。 简化的成分(优先于继承) 通过使用接口,类型是有资格成为对象中一员的,就像Java指定行为一样。例如在标准库里面的IO包,定义一个Writer来指定一个方法,一个Writer函数,其中输入参数是字节数组并且返回整数类型值或者错误类型。任何类型实现一个带有相同签名的Writer方法是对IO的完全实现,Writer接口。这种是解耦代码而不是优雅。它还简化了模拟对象来进行单元测试。例如你想在数据库对象中测试一个方法,在标准语言中,你通常需要创建一个数据库对象,并且需要进行大量的初始化和协议来模拟对象。在Go里面,如果该方法需要实现一个接口,你可以创建任何对该接口有用的对象,所以,你创建了MockDatabase,这是很小的对象,只实现了几个需要运行和模拟的接口——没有构造函数,没有附件功能,只是一些方法。 简化的并发性 相对于其他语言,并发性在Go里面显得更加容易。把‘go’关键字放在任意函数前面然后那个函数就会在其go-routine自动运行(一个很轻的线程)。go-routines是通过通道进行交流并且基本上封锁了所有的队列消息。普通工具对相互排斥是有用,但是Go通过使用通道来踢掉并发性任务和坐标更加容易。 优秀的错误消息 所有与Go相似的语言,自身作出的诊断都是无法与Go相媲美的。例如,一个死锁程序,在Go运行时会通知你目前哪个线程导致了这种死锁。编译的错误信息是非常详细全面和有用的。 其他 这里还有许多其他吸引人的地方,下面就一概而过的介绍一下,比如高阶函数、垃圾回收、哈希映射和可扩展的数组内置语言(部分语言语法,而不是作为一个库)等等。 当然,Go并不是完美无瑕。在工具方面还有些不成熟的地方和用户社区较小等,但是随着谷歌语言的不断发展,肯定会有整治措施出来。尽管许多语言,尤其是D、Rust和Vala旨在简化C++并且对其进行简化,但它们给人的感觉仍是“C++看上去要更好”。

【Go语言的优势】

可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。

静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。

语言层面支持并发,这个就是Go最大的特色,天生的支持并发,我曾经说过一句话,天生的基因和整容是有区别的,大家一样美丽,但是你喜欢整容的还是天生基因的美丽呢?Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。

内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。

简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。

丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大,我最爱的也是这部分。

内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。

跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息。

内嵌C支持,前面说了作者是C的作者,所以Go里面也可以直接包含c代码,利用现有的丰富的C库。

那是你的朋友吗?不,不是。他结得啥子样? 噢,他真高,并且他有卷发。

1c 你的朋友长啥子样?她中常身段,并且她留着长发。

3A:你知道我在五班有一位新朋友吗?B:她长啥子样?A:她有长头发和大眼睛。B:她个子高吗?A:不,她矮。B:我想我熟悉她。她总是穿一件红色的连衣裙和白鞋。A:是的,就是她。她叫南希。

Grammar Focus 你长啥子样?我个子矮。我瘦。 他们长啥子样?他们中常个子。 他长啥子样?他中常身段。 她长啥子样?她高个子。她有卷发。

3a 王林是篮球队的队长。他高个子和中常身段。他留着短发。王林很是受欢迎。

玛丽瘦并且她中常个子。她留着卷曲的金色的短发。她标致可是她有点内向。

徐倩爱讲笑话。她个子矮并且有一点儿胖。她留着美丽的长长的黑发。她总是讲个不停!

迈克是1个好学生。他个子很高。他留着卷曲的棕色的头发并且是中常身段。他喜欢读书和着棋。

3b 保罗长啥子样?他个子高并且他留着黑色的头发。

4 这小我私人寿等个子,他留着短发。

Section B

2c 我最喜欢的音乐家是约翰·杰克逊。他高而瘦。他留着短的卷曲的棕色头发。

3a 约翰尼·迪安的新形象!

你还想的起来约翰尼·迪安,那个戴着滑稽的眼镜和留着长卷发的风行歌手吗?噢,现在他有了1个新形象。他再也不留长的卷发。他留着短的直发。并且他再也不戴眼镜了。可是一些人不喜欢他的新形象。"我认为他没以前那么帅了,"纽约的鲁思说,"可是我妈妈喜欢。"

3b 风行歌手格洛丽亚·格林有了1个新形象。她现在不留长发了。她留短发。并且她再也不穿牛仔裤。他现在穿短裤,她也戴眼镜"太棒了,"她说,"我可以去购物了,并且没有人熟悉我。"

4 他中常个子,留着给色卷发。他很瘦,戴着眼镜。

Self check

1 短发 卷发 长发 高的 矮的 瘦的 重的 黑发 棕发 金发 直发 中常身段穿 中常个子 胡子 眼睛

Just for fun 嗯,你长啥子样?哦,我又高又瘦。并且我很是标致。

第八单位

Section A

图片hi,我想要些面条。您想要哪种面条?请来一碗牛肉番茄面。

2b 你想要多海碗的面条?并且你想要那种面条?

我想要一海碗面条。我想要鸡肉,番茄和和菘菜面。我想要一中常的碗。我想要牛肉和番茄面。

2c 你想要哪种面条?我想要牛肉面。

Grammar Focus 你想要哪种面条?我想要牛肉面。 他想要多海碗的面条?他想要1个小/中/海碗的。

3aA:你们有啥子样的面条?B:噢,来个中碗的。C:好的,我要碗羊肉土豆面。D:我想要些面条。E:你们有多大(碗)的?1.您想要吃点啥子?2.你想要哪种面条?3.我们有牛肉、鸡肉、卷心菜、土豆、番茄…… 4.好的。你想要多大(碗)的?5.我们有大、中、小碗的。

4 安妮,你想要哪种面条?我想要牛肉胡萝卜面。鸡肉菘菜(面) 羊肉土豆(面)番茄鸡蛋(面)牛肉胡萝卜(面)吧

Section B

1b 我喜欢水饺、鱼和橘子汁。我不喜欢洋葱、绿茶和粥。

3a 水饺店

水饺店!我又有一些优质特别降低水饺!特别降低1是洋葱牛肉水饺,15个水饺只售10元。特别降低2是15个水饺只售8元,是菘菜和羊肉水饺。橘子汁只售2元。水饺带汤的特别降低午饭只售10元。今天快来买饺子吧!

3b 甜点屋

你喜欢哪种甜点?我们有2种新上市的极好的特色菜。1.草莓和喷鼻蕉冰淇淋。2.苹果和橘子冰淇淋。您想要多大的甜点?小的,中的,照旧大的?我们也有橘子汁和绿茶。

4 你想要多海碗的面条?我想要1个中碗的。

Self check

1 面条 牛肉 羊肉 洋葱 番茄 土豆 卷心菜 鸡肉 水饺粥 大的 小的 中常的 绿茶 大米或小米做成的饭鱼 橘子汁汤 电话号头 地址 想要碗

Just for fun 我想要一海碗牛肉面。我想要一小杯橘子汁。我想要1个假期!

第九单位

Section A

图片:路西,上周末你做了啥子? 哦,在礼拜六前晌,我打网球了。

上周末你做了啥子?我在家着。你的朋友卡罗尔呢?她去海滩了。你做了啥子?我举行晚会和操练英语了。

Grammar Focus

上周末你(们)做了啥子?我踢了足球。我们去了海滩。 上周末她做了啥子?她做了作业。 上周末他做了啥子? 他去看影戏了。他们上周末做啥子了?他们打了网球。

3a你周末过得怎么样,明?太棒了!我去了海滩。你周末过得怎么样,托尼?还可以!我做作业和看电视了。你周末过得怎么样,萨拉?不太好!我打扫了我的房间并且为筹办算术测验而学习了。

3b 明的周末过得怎么样?太棒了。她……

4 你去爬山了!

Section B

1a 弾了吉他 学了地理 做了作业 去了藏书楼

2b 吉姆做了啥子?吉姆去看影戏了。

2c 上周末你做了啥子?我去探望了我妹

3a孩子们是如何度过周末的

昨天,我问十个在三中的学生三个周末他们做了啥子。对大多孩子来讲,周末是欢愉的。在礼拜六前晌,十个孩子在做了作业和学习了。在礼拜六下战书,五个孩子去了购物,另有三个孩子去了藏书楼。两个孩子也去玩了电脑游戏。在礼拜日晚上,七个孩子去看了影戏或是留在家里看了电视。在礼拜日,两个孩子拜访了他们的朋友,九个孩子打少了他们的房间,另有五个孩子去运动了。

3b 我过了1个忙碌的周末。在礼拜六前晌,我打扫了我的房间。在礼拜六前晌,我做了作业。它有点难。在礼拜六晚上,我姑姑为我做了一顿丰盛的饭菜。在礼拜日早晨,我去了藏书楼,我读了一本有关历史方面的书。之后鄙人午,我和我朋友踢了足球。在礼拜日晚上,我看了电视。我看了1个有趣儿的访问交谈节目(脱口秀)。

4你上周末做了啥子?我写了一首新歌。

Self check

1 周末 寓目 拜访 打扫 学习玩是做去 地理 作业 吉他

3 你认为每小我私人都喜欢周末吗?老亨利就不喜欢。上个月,他与他可爱的小狗汪汪去随便走走。那天气候很好,老亨利很高兴。他坐下来看汪汪和一只友善的黑猫顽耍。该回家了。老亨利到处找他的狗。但汪汪不在那儿…… 现在老亨利很伤心。他没了狗,也没了家子。他啥子也不想做。

Just for fun 你看中去很委顿。是的。我过了1个忙碌的周末。你做运动了吗?是的。礼拜六早晨,我在电脑上踢足球。之后我看了一段体操录像。并且在礼拜日,我听了一场棒球角逐。

第十单位

Section A 图片 你假期去哪儿了?我去多山地区了。

1a 1.呆在家里 2.去了纽约市 3.探望了我叔叔 4.去了夏令营5.去爬山了 6.去了海滩 7.参观了博物馆

1cA:蒂娜假期中去了哪里。 B:她去多山地区了。

2c南希,假期中你去了哪里?我去了纽约市。噢,真的吗?你去中央公园了吗?是的,我去了。

Grammar Focus 假期中你去了那里?我去了夏令营。假期中他们去了那里?他们去了纽约市。 假期中他去了那里?他呆在家里了。 假期中她去了那里?她探望了她的叔叔。你/他/她/他们去中央公园了吗?是的,我/他/她/他们去了。不,你/他/她/他们没去。

3a艾米:林,你假期过得怎么样?林:相当不错。艾米:海滩怎么样?林:海滩是奇奥的。艾米:气候怎么样?林:气候又热又潮湿。艾米:许多人怎么样?林:他们不友善。

3b 乘班车旅行/轻松的 博物馆/无聊的 食品/糟糕的 海滩/美丽的

Section B

2a1.薇拉假期去了哪里?2.薇拉喜欢他的假期吗?

3a 礼拜一,七月十五日

晴气候!一整天阳光亮媚并且气候炎热。我们去了美丽的海滩。我们在水里玩得很是高兴。下战书我们去购物了。市肆太拥挤了,是以我真的不太喜欢。

礼拜二,七月十六日

今天下雨了,是以我们去了博物馆。那有点无聊。我发明1个小男孩在角暗里哭。他迷路了并且我帮忙他找到她的父亲。那件事使我感到很高兴。我没有钱打对外租赁车了,是以我步行回到了旅馆。我真地很累。

礼拜三,七月十七日

今天气候凉爽,是以我们决议去打网球。我们打了一前晌。那真地颇有趣儿。我们晚饭吃了四川菜,这菜很好吃!

3b 长城 故宫 天安门广场 北京胡同

礼拜四,八月一号 今天我去了故宫,很爽。之后我……

Self check

1 假期 博物馆山 夏令营 呆在家里 拜访 适口的 极坏的 便宜的拥挤的

Just for fun 你去哪儿过假日了?噢,我就待在这儿。你做啥子了?我啥子也没做。你为啥子待在家里?我只是不想出去。

第10月1日单位

Section A

图片 你认为肥皂剧怎么样?我不能勉强承受它们。

1c你认为情景剧怎么样?我喜欢它们。

2b A:你认为《饺子王》怎么样?B:我喜欢它。A:你喜欢二宝吗?B:不,我不能勉强承受他。可是我不介怀他的弟弟小宝,你呢?A:我不喜欢他。实际上,我不喜欢情景喜剧。

2c 你认为《饺子王》怎么样?我喜欢它。

Grammar Focus 你认为肥皂剧怎么样?我不能勉强承受它们。 你认为体育运动节目怎么样?我不关注它们。 她认为《饺子王》怎么样?她不喜欢它。 他们认为安娜怎么样?他们喜欢她。

3a 艾伦认为《体育运动新闻》怎么样?他喜欢它。

3b主持人:欢迎从电视里看九点钟的《周末访问交谈》。我们要和这位叫艾伦的13岁男孩谈天。欢迎来到这个节目,艾伦。艾伦:谢谢。主持人:你喜欢看电视吗?艾伦:是的,我喜欢。主持人:你认为《体育运动新闻》怎么样?艾伦:我喜欢它。主持人:我也是!《康健生活》怎么样?艾伦:我不喜欢它。主持人:真的吗?你认为《今日英语》怎么样?艾伦:我很喜欢它。主持人:《华夏文化》呢?艾伦:我喜欢它。主持人:《神州烹调》怎么样?艾伦:哦,我不能勉强承受。做饭是妈妈们干的活。主持人:好的!谢谢你介入我们(的节目)。艾伦!接下来我们将和……谈一谈。

4 你认为《真话实说!》这个节目怎么样?我很喜欢。 我也是。

Section B

1b 哦,我有一块手表,一条围巾和一副太阳镜。

3c你父亲认为那块手表怎么样?他不介怀。

3a啥子是酷?

笔者:玛丽亚·李

这个礼拜,我就"当时的风尚"这一话题问一些学生。我把六样东西逐一贯每位同学展览并且询问了他们对每样东西的看法。他们中一些人的回覆有趣儿。这搭是他们喜欢的和不喜欢的东西:

朱迪·史姑娘喜欢钥匙圈。她的朋友杰夫说他不能勉强承受那条围巾。他说"这是妈妈们围的东西。"威廉·琼斯喜欢钱包,并且他的同学吉娜·泰勒喜欢手表。(她最好的朋友安·赖斯其实不在意手表,但她真的很喜欢太阳镜!)杰瑞·格林也喜欢太阳镜。

最"酷"的东西是腰带。大家都喜欢它!

3b关系密切的马里亚:

我很喜欢读你在校刊上发表的《啥子是酷?》那篇文章,并且愿意告诉你我的看法。我喜欢皮带,并且我喜欢太阳镜。我喜欢钥匙圈,我喜欢围巾,我喜欢手表,我喜欢钱包。请你把我的信发表鄙人个月的校刊顶好吗?

4你认为太阳镜怎么样?我不能勉强承受它们。

Self check

1 一起说话节目 肥皂剧 体育运动节目 情景喜剧爱 喜欢 不介怀 不喜欢 不能勉强承受 太阳镜 头巾 手表 钱包游戏节目

3我不能勉强承受老年人不能讲究标致的概念。所以我喜欢戒指、围巾和太阳镜。我穿色彩鲜艳的服装,由于我想变得年轻、标致。我喜欢旁人赞美我表面的话语。我不在意年轻人怎么看我!

Just for fun 你认为游戏节目怎么样?我不能勉强承受它们。你认为肥皂剧怎么样?我不喜欢它们。噢,你喜欢那种电视节目? 我不喜欢看电视!

第十二单位

Section A

图片 不要在走廊里奔跑。对不起,克拉克女士。

1a 3不要在讲堂吃东西。不要在教室或走廊里听音乐。 不要打架。

2c 辛迪,我们能听音乐吗?我们不能在走廊里听音乐,但我们可以在外面听。

Grammar Focus 你们黉舍的制度是啥子?不要在走廊里奔跑并且上课不要迟到。 我们可以在黉舍里吃东西吗?我们可以在食堂里吃东西,但不能在教室里吃。你们在黉舍里可以戴帽子吗?是的,我们可以。/不,我们不能。 你们在黉舍必须穿校服吗?是的,我们必须。/不,我们没必要。你们还必须做啥子?我们必须打扫教室。

3a 约翰,你上体育运动课必须穿运动鞋。 在黉舍,我们必须打扫教室。玛丽,你没必要穿制服。

3b 我们必须穿校服吗?是的,我们必须。

4 学生们能在走廊里吃东西吗?是的,他们可以。

Section B

1 放学后不要看电视。上学时晚上不要出去。 放学后做作业。 天天操练弹吉他。

2c 我放学后必须做作业。之后我……

3a关系密切的百事通博士:

我不开心。在我的家里有太多的家规。我天天早晨六点钟就得睡醒。放学后我不能和朋友们在一起,由于我得做作业。上学期间我晚上不能看电视,并且我必须在10点之前上床困觉。周末我必须打扫我的房间,洗我的服装。之后我必须帮妈妈做饭。随即我必须去少年宫学钢琴。我底子没有不论什么的欢愉。我该怎么办? 赵培

3b禁止一起说话 禁止带文具包 禁止带食品 禁止带湿雨伞

4 玛丽亚,你必须10:00之前困觉吗?是的,我必须。 Self check 1 教室 走廊 到达 晚的 在外边 制服运动鞋 出去 操练能 不能 只得听

Just for fun嗨,爸爸。我可以骑自桥式起重机吗?是的,你可以。我必须戴头盔吗?是的,你必须。

温习单位7-12

1a面条 肥皂剧 钱包 土豆 瘦的 制服 极其昂贵的 高度 打扫 凉爽的 地理钥匙圈 步行 当时的风尚 主持人 沙岸

短的 不能勉强承受 胡须山 博物馆 太阳镜 藏书楼 洋葱 皮带 拥挤的 适口的 饺子 都雅的 情景喜剧 走廊 杂志 围巾 在外面羊肉

1d鄙人雨? 外面。

2e 维克斯先生结得啥子样?他高个子,带眼镜。

3 a A:你的假期过的怎么样?B:棒极了!我看了很多影戏。B:你假期上哪儿去了?A:我和家人到上海去了。

bA:你必须打扫房间吗? B:是的,我必须打扫。

A:放学后你可以看电视吗? B:是的,我可以看。

5 在黉舍我们能戴帽子吗?不,我们不能戴。 不,我们不能戴。 我们能听音乐吗? 是的,我们可以。 我们还必须做啥子? 我们必须在食堂里吃东西 。我们必须穿校服吗? 是的,必须穿。 放学后你能看电视吗? 是的,我可以看。 是的,我可以看。上学期间晚上你能出行吗?不,我不能出行。 你还必须做啥子? 我必须天天操练吉他。 你必须打扫房间吗? 是的,我必须打扫。

类型 在变量名后边

也可不显式声明类型, 类型推断, 但是是静态语言, name一开始放字符串就不能再赋值数字

方法,属性 分开 方法名首字母大写就是就是外部可调的

面向对象设计的一个重要原则:“优先使用组合而不是继承”

Dog 也是Animal , 要复用Animal 的属性和方法,

只需要在结构体 type 里面写 Animal

入口也是main, 用用试试

多态, 有这个方法就是这个接口的实现, 具体的类 不需要知道自己实现了什么接口,

使用: 在一个函数调用之前加上关键字go 就启动了一个goroutine

创建一个goroutine,它会被加入到一个全局的运行队列当中,

调度器 会把他们分配给某个 逻辑处理器 的队列,

一个逻辑处理器 绑定到一个 操作系统线程 ,在上面运行goroutine,

如果goroutine需要读写文件, 阻塞 ,就脱离逻辑处理器 直接 goroutine - 系统线程 绑定

编译成同名.exe 来执行, 不通过虚拟机, 直接是机器码, 和C 一样, 所以非常快

但是也有自动垃圾回收,每个exe文件当中已经包含了一个类似于虚拟机的runtime,进行goroutine的调度

默认是静态链接的,那个exe会把运行时所需要的所有东西都加进去,这样就可以把exe复制到任何地方去运行了, 因此 生成的 .exe 文件非常大