好像翻译错了 两个都是 [3] int 完全
剑尘
4年前
修改理由:
此投稿已在 4年前 合并。
内容修改:
Old | New | Differences |
---|---|---|
1 | ||
2 | 1 | ![Golang](https://iocaffcdn.phphub.org/uploads/images/201904/03/1/KvHLnScPvQ.png!large) |
3 | 2 | |
4 | 3 | > 数组是一个容纳相同数据类型的容器。 Go 中的数组的长度是固定的,无法因为数据的增加而自动扩展。 | … | … |
11 | 10 | |
12 | 11 | > 数组是一种复合数据类型,它由 `整型`,`字符串`,`布尔` 等原始数据类型组成。 |
13 | 12 | |
14 | ||
13 | ||
15 | 14 | |
16 | 15 | ## ☛ 如何定义一个数组? |
17 | 16 | … | … |
37 | 36 | [0 0 0] |
38 | 37 | ``` |
39 | 38 | |
40 | ||
39 | ||
41 | 40 | |
42 | 41 | ## ☛ 值的分配 |
43 | 42 | … | … |
51 | 50 | |
52 | 51 | 在上面的程序中,我们使用 `a [index]` 语法为数组中的 3 个元素赋值。 |
53 | 52 | |
54 | ||
53 | ||
55 | 54 | |
56 | 55 | ## ☛ 初始值 |
57 | 56 | … | … |
85 | 84 | |
86 | 85 | <https://play.golang.org/p/J4x7X8Vg73G> |
87 | 86 | |
88 | ||
87 | ||
89 | 88 | |
90 | 89 | ## ☛ 多行初始值 |
91 | 90 | … | … |
99 | 98 | |
100 | 99 | |
101 | 100 | |
102 | ||
101 | ||
103 | 102 | |
104 | 103 | ## ☛ 数组长度的自动申明 |
105 | 104 | … | … |
111 | 110 | |
112 | 111 | 上面的程序将打印相同的结果,因为 Go 编译器会统计数组的元素个数为「4」 |
113 | 112 | |
114 | ||
113 | ||
115 | 114 | |
116 | 115 | ## ☛ 求取数组的长度 |
117 | 116 | … | … |
121 | 120 | |
122 | 121 | <https://play.golang.org/p/wV9edsKhuh4> |
123 | 122 | |
124 | ||
123 | ||
125 | 124 | ## ☛ 数组的比较 |
126 | 125 | |
127 | 126 | 正如我们之前在数组定义中讨论的那样,数组本身就是一种数据类型。 `[3] int` 与 `[4] int` 是两个不同的数组,与 `[4] string` 更是不同的两个数组。这就像比较`int == string` 或 `apple == orange` 一样,这是无效和无意义的。 因此,与其他编程语言不同,这些不同数据类型的数组是不能相互比较的。 |
128 | 127 | |
129 | 然而 `[ | |
128 | 然而 `[6] int` 可以与 `[3] int` 进行比较,即使它们的数组元素不匹配,但是因为它们具有相同的数据类型。 | |
130 | 129 | |
131 | 130 | **对于与第二个数组是相同条件是:两个数组应该是相同的类型,其中必须包含相同的元素,并且所有元素必须是相同的顺序。** 在这种情况下,用 `==` 比较 将返回的结果是 `true`。 如果这些条件中的一个或多个不匹配,则返回 `false` 。 |
132 | 131 | |
133 | ||
132 | ||
134 | 133 | |
135 | 134 | Go 首先匹配数据类型,然后根据数组的索引来比较两个数组的每个元素是否相同(包括元素的值以及顺序是否相同)。 |
136 | 135 | … | … |
144 | 143 | |
145 | 144 | 但是在第三次比较的情况下,由于数组 `a` 和 `d` 包含相同顺序的相同元素,因此`a == d` 将返回 `true` 。 因此上面的程序打印结果如下。 |
146 | 145 | |
147 | ||
146 | ||
148 | 147 | |
149 | 148 | ## ☛数组迭代 |
150 | 149 | … | … |
167 | 166 | |
168 | 167 | <https://play.golang.org/p/z0_v0CKquXU> |
169 | 168 | |
170 | ||
169 | ||
171 | 170 | |
172 | 171 | ## ☛ 多维数组 |
173 | 172 | … | … |
185 | 184 | |
186 | 185 | <https://play.golang.org/p/w7oyAb_Acik> |
187 | 186 | |
188 | ||
187 | ||
189 | 188 | |
190 | 189 | Go 还提供了多维数组的简写方式: |
191 | 190 | … | … |
209 | 208 | } |
210 | 209 | ``` |
211 | 210 | |
211 | ||
212 | ||
213 | ### 值传递 | |
214 | ||
215 | 像 `int` 或 `string` 类型一样,将数组传递给函数,属于值传递。函数只是接收它的副本。因此,在函数内部对数组的改变,不会影响原始数组的值。 | |
216 | ||
217 | **我为什么要强调这一点**,因为,当后面学到 `slice` 的时候,你会发现就不是这个情况了。 | |
218 | ||
212 | 219 | |
213 | ||
214 | ||
215 | ||
216 | ||
217 | ||
218 | ||
219 | ||
220 |