Go并发冒险

为Java开发人员或具有类似血统的人们提供有趣的Go语言介绍,例如以动态键入语言为主的体验。 内部有很多链接,因为它们是我理解该语言必不可少的链接。

Go并发冒险
地鼠-“你好,人类”

你很好奇 您已经听说过这种神秘的语言正在稳步攀登软件行业排名 您知道Google难以捉摸的巨龙创造了它。 也许您听说过Node JS的创建者在其中写过。 但除此之外,您还注意到了地鼠。

必须正确理解Go的概念。 那就是并发!

但是为什么并发很重要? 没有办法解决它 如果仅存在同步性,我们的计算机将以蜗牛般的速度运转。

Go迅速成为并发编程的领导者。 这是因为它编写精美,并且性能非常好。 在某种程度上,它是两全其美的。

Go并发冒险
检查此链接以获取更多说明

让我们通过想象来学习。 您处于平行宇宙中。 生活的环境是迷宫。 您可以创建自己的副本,并将这些其他对象发送到不同的方向。 生命的意义正在寻找通过迷宫的方法。

Go并发冒险
Go并发冒险
一百万您正在寻找(他们的?您的?)一生。

您会向所有可能的方向发送克隆。 当找到出口时,所有克隆都消失了,您成为找到路的克隆。 您会发现生命的意义。

首先,以JavaScript为例:

JavaScript事件循环以查找出口...是的,这过于简单了。

现在…。 走!

快速浏览一下,其后直接有详细说明。

好的,有很多解释。

让我们从小开始;)

结构? 这类似于在JS中创建构造函数并关联两个属性。 但是您必须指定属性的类型,并且不能提供默认值

在嵌套结构上:

现在! 嵌套结构。 所以我可以做到…… maze.Location.props.final

那是什么 [][] 这意味着: [[],[]] 这是一种类型,一个数组中有两个数组,非常复杂。

到接口:

怎么办? 将它们视为……浮动方法构造函数! 在Go中,它们称为接口! 将它们与结构关联后,该结构即可调用它们。 在此之前,没有人可以称呼他们。

尽管还有另外一步,但该函数必须与struct关联:

正如评论所说。 以这种方式对与特定结构关联的方法进行分类。

但是现在有函数了,*是什么? 当然,您已经听说过一个指针,但这对Go意味着什么? 如果您在其他地方编写此代码: &c.goDifLocation(...)类型为Clone的变量,在这种情况下为c……被突变! 听起来有点熟? 如果您想了解有关突变的更多信息: Go中没有通过引用

回到功能! 参数: (l string) 是的,还必须为其指定特定的类型。 同样,通常在Go中使用短名称作为参数名称,因此使用l表示位置。

接下来,一个更详细的功能:

1 2 3 4 好吧,是的,这是现实。

  1. (c clone)例如 somethingOfTypeClone.findExit…
  2. findExit —这是函数的名称
  3. (m Maze) somethingOfTypeClone.findExit(somethingOfTypeMaze)
  4. 最后,返回值! TheMeaningOfLife

整体功能:

现在的功能。 签出第一行: var currentLocation string 同样,请始终记住:类型是必要的。

请注意,我如何从if语句中初始化currentLocation? 听起来有点熟? 词汇范围 如果您不知道该链接,则有一个很好的要点来​​解释。

和if语句? 不允许使用括号! 太好了,不是吗? 单双等于。 再次,比JS好得多。 但是要知道,花括号是必需的。 如果抛出其他语句? 简短说明: 例如:If / Else 基本上,应该知道else或else if必须在结尾括号的同一行上— } else {...

以及对特定索引的复杂抓取。 我简单地说,找到1到3之间的数字。 rand是一个库,数学也必须在文件的开头导入。 好奇的链接: Packages 尽管在Go中获取随机数有点复杂

进入主要功能:

Main是您执行文件时执行的所有操作,例如,此函数中执行的所有操作将是输出或返回的内容。

:=关于什么? 隐式类型 是的,函数以与JS中类似的方式返回值。 Maze{ mazeData }正在使用mazeData作为与其关联的值来创建结构。

假设mazeData看起来像这样:

填写结构所需的每个值。 否则,将给出零值

至于: make([]Clone, 1000000) 这称为切片 创建了一个数组,该数组填充了1000000个此结构类型,但是它们都为空!

并发!

最后的代码。 for := range类似于clones数组的forEach。 虽然,第一个参数始终是索引,第二个参数可以是实际实例。 我正在设置每个克隆的ID,然后…

去例行!!!!

您键入此字,每个克隆都进入它自己的过程,以找到通过迷宫的方式。 所有人都朝着不同的方向前进,但都朝着同一目标前进! 并发性。

Go并发冒险
繁忙的地鼠

就像上面的地鼠一样,他们都在做同样的事情,一件非常可怕的事……烧书。 但是还是! 每个都是针对同一目标的单一实体。

现在,这是Go语言的简介。 希望您喜欢这个旅程。 如果您正在寻找更多信息以深入了解:

以身作则
围棋之旅
Go Koans
绝对是这个视频 这个由Go的策划者!
谢谢!
杰瑞

From: https://hackernoon.com/a-taste-of-go-for-javascript-hackers-e9e45f8c10bf