Go并发冒险
为Java开发人员或具有类似血统的人们提供有趣的Go语言介绍,例如以动态键入语言为主的体验。 内部有很多链接,因为它们是我理解该语言必不可少的链接。
你很好奇 您已经听说过这种神秘的语言正在稳步攀登软件行业的排名 。 您知道Google难以捉摸的巨龙创造了它。 也许您听说过Node JS的创建者在其中写过。 但除此之外,您还注意到了地鼠。
必须正确理解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 好吧,是的,这是现实。
-
(c clone)
例如 somethingOfTypeClone.findExit… -
findExit
—这是函数的名称 -
(m Maze)
somethingOfTypeClone.findExit(somethingOfTypeMaze) - 最后,返回值!
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 Koans
绝对是这个视频 ! 而这个由Go的策划者!
谢谢!
杰瑞
From: https://hackernoon.com/a-taste-of-go-for-javascript-hackers-e9e45f8c10bf