mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 20:02:56 +08:00
07.3
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
## 翻译进度
|
||||
|
||||
7.2 [For-range 结构](eBook/07.2.md)
|
||||
7.3 [For-range 结构](eBook/07.3.md)
|
||||
|
||||
## 支持本书
|
||||
|
||||
|
@@ -1,13 +1,12 @@
|
||||
# 7.3 For-range 结构
|
||||
|
||||
172
|
||||
这种构建方法可以应用与数组和 slice:
|
||||
|
||||
这种构建方法可以应用与数组和slice:
|
||||
for ix, value := range slice1 {
|
||||
...
|
||||
}
|
||||
|
||||
第一个返回值dx是数组或者slice的索引,第二个是在该索引位置的值;他们都是仅在for循环内部可见的局部变量,所以该值只是该索引项slice值的一个拷贝并且不能被修改。
|
||||
第一个返回值 dx 是数组或者 slice 的索引,第二个是在该索引位置的值;他们都是仅在 for 循环内部可见的局部变量,所以该值只是该索引项 slice 值的一个拷贝并且不能被修改。
|
||||
|
||||
示例 7.9 [slices_forrange.go](exmaples/chapter_7/slices_forrange.go)
|
||||
|
||||
@@ -43,7 +42,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
slices_forrange2.go给出了一个关于字符串的例子, `_`可以用于忽略索引。
|
||||
slices_forrange2.go 给出了一个关于字符串的例子, `_` 可以用于忽略索引。
|
||||
|
||||
如果你只需要索引,你可以忽略第二个变量,例如:
|
||||
|
||||
@@ -52,11 +51,11 @@ slices_forrange2.go给出了一个关于字符串的例子, `_`可以用于忽
|
||||
}
|
||||
// Output: 0 1 2 3
|
||||
|
||||
如果你需要修改seasons[ix]的值可以使用这个版本。
|
||||
如果你需要修改 seasons[ix] 的值可以使用这个版本。
|
||||
|
||||
多维slice下的for range方法:
|
||||
多维 slice 下的 for-range 方法:
|
||||
|
||||
通过计算行数和矩阵值可以很方便的写出如(参考7.1.3)的for-loops方法来,例如(参考7.5的例子multidim_array.go):
|
||||
通过计算行数和矩阵值可以很方便的写出如(参考第 7.1.3 节)的 for-loops 方法来,例如(参考第 7.5 节的例子 multidim_array.go):
|
||||
|
||||
for row := range screen {
|
||||
for column := range screen[0] {
|
||||
@@ -64,33 +63,34 @@ slices_forrange2.go给出了一个关于字符串的例子, `_`可以用于忽
|
||||
}
|
||||
}
|
||||
|
||||
问题 7.5: 假设我们有如下slice: items := [...]int{10, 20, 30, 40, 50}
|
||||
问题 7.5: 假设我们有如下 slice:`items := [...]int{10, 20, 30, 40, 50}`
|
||||
|
||||
a) 如果我们写了如下的for循环,那么执行完for循环后的item的值是多少?如果你不确定的话可以测试一下:)
|
||||
a) 如果我们写了如下的 for 循环,那么执行完 for 循环后的 item 的值是多少?如果你不确定的话可以测试一下:)
|
||||
|
||||
for _, item := range items {
|
||||
item *= 2
|
||||
}
|
||||
|
||||
b) 如果a)无法正常工作,写一个for循环让值可以double。
|
||||
b) 如果 a) 无法正常工作,写一个 for 循环让值可以 double。
|
||||
|
||||
问题 7.6: 通过使用省略号操作符`...`来实现累加方法。
|
||||
问题 7.6: 通过使用省略号操作符 `...` 来实现累加方法。
|
||||
|
||||
练习:
|
||||
|
||||
练习 7.7 sum_array.go
|
||||
|
||||
a) 写一个Sum函数,传入参数为一个4位float数组成的数组arrF,返回该数组的所有数字和。
|
||||
a) 写一个 Sum 函数,传入参数为一个 4 位 float 数组成的数组 arrF,返回该数组的所有数字和。
|
||||
|
||||
如果把数组修改为slice的话代码要做怎样的修改?如果用slice形式方法实现不同长度数组的的和呢?
|
||||
如果把数组修改为 slice 的话代码要做怎样的修改?如果用 slice 形式方法实现不同长度数组的的和呢?
|
||||
|
||||
b) 写一个SumAndAverage方法,返回两个int和float32类型的未命名变量的和与平均值。
|
||||
b) 写一个 SumAndAverage 方法,返回两个 int 和 float32 类型的未命名变量的和与平均值。
|
||||
|
||||
练习 7.8 min_max.go
|
||||
|
||||
写一个minSlice方法,传入一个int的slice并且返回最小值,再写一个maxSlice方法返回最大值。
|
||||
写一个 minSlice 方法,传入一个 int 的 slice 并且返回最小值,再写一个 maxSlice 方法返回最大值。
|
||||
|
||||
## 链接
|
||||
|
||||
##链接
|
||||
- [目录](directory.md)
|
||||
- 上一节:[分片](07.2.md)
|
||||
- 下一节:[分片重组](07.4.md)
|
||||
- 上一节:[切片](07.2.md)
|
||||
- 下一节:[切片重组](07.4.md)
|
@@ -1,4 +1,7 @@
|
||||
#7.4 分片重组
|
||||
# 7.4 切片重组
|
||||
|
||||
175
|
||||
|
||||
我们已经知道slice创建的时候通常比相关数组小,例如
|
||||
|
||||
slice1 := make([]type, start_length, capacity)
|
||||
|
@@ -62,6 +62,7 @@
|
||||
- 7.1 [声明和初始化](07.1.md)
|
||||
- 7.2 [切片](07.2.md)
|
||||
- 7.3 [For-range 结构](07.3.md)
|
||||
- 7.4 [切片重组](07.4.md)
|
||||
- 第8章:Maps
|
||||
- 第9章:包(package)
|
||||
- 第10章:结构(struct)与方法(method)
|
||||
|
Reference in New Issue
Block a user