语言回顾

今天,我将向您介绍一种称为GO的更新语言。 本演讲旨在说明Go语言的目的,特征和用途。 另外,您还将看到“ GO”必须提供的三个最吸引人的功能,例如界面,反射和并发

我想从定义开始。 Go是Google创建的一种开源编程语言。 Go是一种经过编译的静态命令行输入的安全语言。 它与“ ALGOL”和“ C”等传统语言非常相似。 Go还具有垃圾回收,有限的结构类型,内存安全性功能,csp样式和并发编程。 它始于2007年末,并于2009年成为开源。自那时起,该语言蓬勃发展,并拥有活跃的社区。

在我们开始解释GO的细节之前。 这是创建GO的原因。

可扩展性和构建时间消耗。 Google经历了漫长的构建时间,大型编译集群的工作量太大了。 扩展变得越来越困难,他们希望花费更少的时间进行建设。 完成此任务可能需要几分钟到几小时。 描绘成千上万的开发人员,他们全都使用百万行代码,并且每天都会更新。 他们需要一个能够帮助他们扩展支持数千个开发人员的不同系统的解决方案。 这就是Go的用武之地。它是由工程师Robert Friesemer,Rob Pike和Ken Thompson开发的

Go脱颖而出主要是因为它可移植到大多数操作系统,内置并发和垃圾回收。 它还具有出色的软件体系结构适应性,跨组件边界的鲁棒性,廉价,轻巧和组合(Go没有继承但可以模仿)。

反射是使它们在所有其他语言中脱颖而出的功能之一。 定义如下。 “ Reflection实现了运行时反射,允许程序处理任意类型的对象”

您应该知道的是,大多数安全类型语言都具有内置的打印或打印功能。 Google决定他们没有内置的打印功能。 他们无法在功能中内置此功能,因此创建了Reflection。 反射很酷,因为它能够在运行时从变量中收集类型信息数据! 这有助于他们的语言保持灵活性。

在这张照片(图1)中,作者尝试举一个例子。 他解释说,在运行时将检查变量的特定类型。 在这种情况下,它正在检查传递的“ args”是字符串类型还是整数类型。 在任何情况下,该函数都会打印出“ args”数据类型。

第二点是“界面”。 它被定义为“一种类型通过定义所需的方法来实现接口”。 这将模仿继承并将代码分开。 考虑这个概念的一种更简单的方法是根据业务收购进行思考。 一旦企业收购了另一家公司,就无需做太多事情来保持企业的运转。 它只需要知道需要采取什么措施并完成此操作即可。 此操作基本上是执行的一般订单,作为回报,业务将继续运行。 我必须强调。 接口不需要知道如何执行动作,只要它执行动作即可。 它还使代码更易于维护。 因为有了“接口”,GO才能够打印某些字符串,而无需开发人员将功能编码出来。 以下图为例。

如图2所示,“度量”获取了R和C。一旦获取,该函数将立即打印g,g.area()和g.perim()的执行。 您可能会想,“但是如果几何接口没有在其主体中完全定义,那么几何接口如何知道要执行什么呢?”那么,我们给函数(区域)和perim()“实现”。 这允许Geometry接口实现方法。 接口不知道这些方法将执行什么,但是它将执行分配给它的任何方法。 在这种情况下,它将执行方法区域和权限。 “量度”功能利用具有接口类型的任何变量,因此调用命名接口中的方法

最后,让我们谈谈并发。 这可能是GO最引人注目的功能。 但是,让我先解释一些事情,然后再继续。 并行与并发。 并行是执行任务的独立过程。 通常通过称为线程的方法来完成。 产生多个线程以彼此独立地执行相同的确切任务。 并行将独立于其他任务执行并完成,而并发将处理同时任务的“如何”工作。

GO的理念是“不通过共享内存进行通信,而是通过通信共享内存”

GO具有Gorotuines,它具有自己的调用堆栈并不断增长。 Goroutine是执行例程的组成。 Goroutine很便宜,可以动态多路复用到单个线程上,以确保其他例程不会阻塞其他Goroutine。 他们之间有一种称为“渠道”的沟通渠道。 通过这些通道,这些Goroutine可以相互交谈,避免彼此阻塞。 它们发送或接收消息,因此使它们同步工作。

这是一些同时进行的方法。

简单的Goroutine

这只是发送Goroutine来执行任务,您可以做的比Goroutine还要多。 他们将彼此独立行事。 他们将一接到命令便设法将其完成。

您也可以使用“扇入”

一个函数可以从多个输入中读取并继续进行操作,直到将所有通道多路复用到一个已关闭的通道上,然后将所有输入都关闭,然后将所有通道关闭。

我最喜欢的之一是菊花链

在这里,创建了多个Goroutine,每个Goroutine都打开了一个彼此通信的通道。 一旦创建了最后一个并完成其任务,它将对其他Goroutine产生和雏菊效应产生多米诺效应。 一个Goroutine执行其任务,并允许另一个Goroutine继续。

好奇心:

一些流行的公司已经在其系统的某些部分采用了GO。

为什么要使用Go?

公司使用Goto解决扩展问题。 与不同的系统一起使用非常有用,并且它使用的功能很少,使开发人员希望更多地使用它。 它适用于大多数操作系统。

谁在使用Go?

附加功能:

  • 编写网络应用程序
  • 分析程序

谁在使用GO?

  • 英特尔,
  • Iron.io,
  • 乔布
  • JumpCloud,
  • 只是看,
  • 密钥库
  • 克利普
  • 线,
  • Longshot系统,
  • Lyft,
  • SpaceMonkey,
  • 春季公司
  • 正方形,来源
  • StackExchange
  • StackPath,
  • 蛇纹石

在这里总结一下这篇文章是为什么要在应用程序中使用GO的原因。 它使用接口的概念,它使您可以编写更少的代码并做更多的事情; 它使您可以省去声明数据类型的麻烦,并为构建并发应用程序提供了更简便的方法。 这篇文章有更多资源,为什么您希望在本文结尾处使用GO。 我希望这将为您将来的应用服务。

资源:

视窗

  • http://www.wadewegner.com/2014/12/easy-go-programming-setup-for-windows/

苹果电脑

  • https://nats.io/documentation/tutorials/go-install/
  • https://golang.org/
  • https://www.quora.com/Other-than-Google-what-c​​ompanies-are-using-Go-in-production
  • https://quicknotes.io/n/1XB0
  • https://talks.golang.org/2012/splash.article
  • http://www.dmuth.org/node/1414/multi-core-cpu-performance-golang
  • https://www.goinggo.net/2014/01/concurrency-goroutines-and-gomaxprocs.html