该书“头先。学习围棋»

图片嘿。哈布罗兹特利!Go使构建简单,可靠和高效的程序变得容易。本书将使普通程序员可以使用。Go的主要目标是有效地与网络通信和多处理一起工作,但是用这种语言编写的代码在读取和编写时比在Python和JavaScript中困难得多。简单的示例可让您熟悉实际的语言,并立即开始在Go上编程。因此,您可以快速学习公认的规则和技术,这些规则和技术将使您自称为地鼠。


数组中的零值


与变量一样,创建数组时,对于数组中包含的类型,包含在其中的所有值都初始化为零。所以默认情况下,int值的数组用零填充:

图片

另一方面,字符串的null值是一个空字符串,因此默认情况下,字符串值的数组填充有空字符串:

图片

零值使您可以安全地对数组元素执行操作,即使它们尚未分配值也是如此。例如,以下数组存储整数计数器。即使不先分配值也可以将任何元素加1,因为我们知道所有计数器值都从0开始。

图片

创建数组时,其中包含的所有元素对于数组中存储的类型均初始化为零。

数组文字


如果您事先知道应该存储在数组中的值,则可以使用数组文字形式的这些值来初始化数组。数组文字以数组类型开头-在方括号中的元素数量后跟元素类型。接下来,花括号中是数组元素的初始值的列表。元素值必须用逗号分隔。

图片

这些示例与之前的示例几乎没有什么不同,除了以下事实之外,不是使用顺序为数组的元素分配值,而是使用数组文字初始化整个数组。

图片

数组文字还允许您使用带有=的简短变量声明。

图片

数组文字可以跨越多行,但是代码中的每一行都必须有一个逗号。逗号甚至应位于数组文字中的最后一个元素之后,如果后跟换行符。(乍看之下,这种语法看起来很尴尬,但它简化了随后在代码中添加新元素的过程。)

图片


图片


“ fmt”包的功能可以与数组一起使用


在调试代码时,不需要将Println数组的元素逐个传递给fmt包的其他函数。只需传递整个数组即可。fmt软件包包含用于格式化和输出数组的逻辑。(fmt包还可以与段,地图和其他数据结构一起使用,这将在后面介绍。)

图片

您可能还记得Printf和Sprintf函数使用的动词“%#v”-它格式化Go代码中出现的值。使用“%#v”格式化时,数组以Go数组文字的形式显示。

图片

循环访问数组元素


您不需要显式地编写在代码中访问的数组元素的整数索引。您也可以将整数变量的值用作索引。

图片

这意味着可以在for循环中迭代数组元素。循环遍历数组的索引,循环变量用于访问具有当前索引的元素。

图片

通过变量访问数组的元素时,必须谨慎行事并监视程序中使用了哪些索引值。如前所述,数组包含特定数量的元素。尝试访问数组外部的索引会导致恐慌-程序执行期间(而不是在编译阶段)发生的错误。

图片

通常,在出现紧急情况时,程序会崩溃并向用户显示错误消息。不用说,应尽可能避免这种情况。

图片

使用len函数检查数组的长度


仅受正确索引限制的写循环会带来一定的错误风险。幸运的是,有一些技巧可以简化此过程。

首先,您可以在访问元素之前检查数组中元素的实际数量。为此,您可以使用内置的len函数,该函数返回数组的长度(数组中包含的元素数)。

图片

在整个数组的处理循环中,您可以使用len函数来确定可以安全访问的索引。

图片

图片

在“ for ... range”循环中安全枚举数组


在另一种更安全的处理数组所有元素的方式中,使用了...范围循环的特殊方法。在具有范围的形式中,指定了一个变量用于存储每个元素的整数索引,另一个变量用于存储元素本身的值以及一个迭代数组。该循环对数组中的每个元素执行一次;元素索引分配给第一个变量,元素值分配给第二个变量。循环块中包含一个代码来处理这些值。

图片

这种形式的for循环不包含令人困惑的初始化,条件和终止表达式。并且由于将元素值自动分配给变量,因此消除了访问无效数组索引的风险。带范围的for循环形式更易于阅读和更安全,这就是为什么在处理数组和其他集合时最常出现这种形式的原因。

以下是一个示例的示例,该示例从一个注释数组输出所有值,并转换为使用for ... range循环:

图片

循环运行七次,对notes数组中的每个元素运行一次。对于每个元素,为index分配元素的索引,并为note分配元素的值。之后,我们打印索引和值。

»有关这本书的更多信息,请访问出版商的网站
» 目录
» Khabrozhiteley的节录:

优惠券可享受25%的折扣- 首先购买

支付纸质版本后,会通过电子邮件发送电子图书。

All Articles