This commit is contained in:
Unknwon
2015-02-22 04:41:45 -05:00
parent 885d84ca62
commit d8608c6c23
4 changed files with 56 additions and 43 deletions

View File

@@ -9,7 +9,7 @@
## 翻译进度 ## 翻译进度
8.2 [测试键值对是否存在及删除元素](eBook/08.2.md) 8.3 [for-range 的配套用法](eBook/08.3.md)
## 支持本书 ## 支持本书

View File

@@ -1,40 +1,46 @@
# 8.3 for-range 的配套用法 # 8.3 for-range 的配套用法
190 可以使用 for 循环构造 map
可以使用for循环构造map ```go
for key, value := range map1 {
...
}
```
第一个返回值 key 是 map 中的 key 值,第二个返回值则是该 key 对应的 value 值;这两个都是仅 for 循环内部可见的局部变量。其中第一个返回值key值是一个可选元素。如果你只关心值可以这么使用
```go
for _, value := range map1 {
...
}
```
如果只想获取 key你可以这么使用
```go
for key := range map1 {
fmt.Printf("key is: %d\n", key)
}
```
示例 8.5 [maps_forrange.go](examples/chapter_8/maps_forrange.go)
```go
package main
import "fmt"
func main() {
map1 := make(map[int]float32)
map1[1] = 1.0
map1[2] = 2.0
map1[3] = 3.0
map1[4] = 4.0
for key, value := range map1 { for key, value := range map1 {
... fmt.Printf("key is: %d - value is: %f\n", key, value)
} }
}
第一个返回值key是map中的key值第二个返回值则是该key对应的value值这两个都是仅for循环内部可见的局部变量。其中第一个返回值key值是一个可选元素。如果你只关心值可以这么使用 ```
for _, value := range map1 {
...
}
如果只想获取key你可以这么使用
for key := range map1 {
fmt.Printf("key is: %d\n", key)
}
示例 8.5 [maps_forrange.go](examples/chapter_8/maps_forrange.go)
package main
import "fmt"
func main() {
map1 := make(map[int]float32)
map1[1] = 1.0
map1[2] = 2.0
map1[3] = 3.0
map1[4] = 4.0
for key, value := range map1 {
fmt.Printf("key is: %d - value is: %f\n", key, value)
}
}
输出结果: 输出结果:
@@ -47,16 +53,19 @@
问题 8.1 下面这段代码的输出是什么? 问题 8.1 下面这段代码的输出是什么?
capitals := map[string] string {"France":"Paris", "Italy":"Rome", "Japan":"Tokyo" } ```go
for key := range capitals { capitals := map[string] string {"France":"Paris", "Italy":"Rome", "Japan":"Tokyo" }
fmt.Println("Map item: Capital of", key, "is", capitals[key]) for key := range capitals {
} fmt.Println("Map item: Capital of", key, "is", capitals[key])
}
```
练习 8.1 map_days.go **练习 8.1**
创建一个map来保存每周7天的名字将它们打印出来并且测试是否存在tuesday和hollyday。 创建一个map来保存每周7天的名字将它们打印出来并且测试是否存在tuesday和hollyday。
##链接 ## 链接
- [目录](directory.md) - [目录](directory.md)
- 上一节:[删除元素](08.2.md) - 上一节:[测试键值对是否存在及删除元素](08.2.md)
- 下一节:[maps分片](08.4.md) - 下一节:[map 分片](08.4.md)

View File

@@ -1,11 +1,14 @@
#8.3 map分片 # 8.3 map 分片
191
假设我们想获取一个map的分片我们必须使用两次make()方法第一次分配slice第二次分配slice的每个map元素参见下面的例子8.3)。 假设我们想获取一个map的分片我们必须使用两次make()方法第一次分配slice第二次分配slice的每个map元素参见下面的例子8.3)。
示例 8.3 [maps_forrange.go](examples/chapter_8/maps_forrange.go) 示例 8.3 [maps_forrange.go](examples/chapter_8/maps_forrange.go)
package main package main
import "fmt" import "fmt"
func main() { func main() {
// Version A: // Version A:
items := make([]map[int]int, 5) items := make([]map[int]int, 5)
@@ -14,7 +17,7 @@
items[i][1] = 2 items[i][1] = 2
} }
fmt.Printf("Version A: Value of items: %v\n", items) fmt.Printf("Version A: Value of items: %v\n", items)
// Version B: NOT GOOD! // Version B: NOT GOOD!
items2 := make([]map[int]int, 5) items2 := make([]map[int]int, 5)
for _, item := range items2 { for _, item := range items2 {

View File

@@ -69,6 +69,7 @@
- 8.1 [声明、初始化和 make](08.1.md) - 8.1 [声明、初始化和 make](08.1.md)
- 8.2 [测试键值对是否存在及删除元素](08.2.md) - 8.2 [测试键值对是否存在及删除元素](08.2.md)
- 8.3 [for-range 的配套用法](08.3.md) - 8.3 [for-range 的配套用法](08.3.md)
- 8.4 [map 分片](08.4.md)
- 第9章package - 第9章package
- 第10章结构struct与方法method - 第10章结构struct与方法method
- 第11章接口interface与反射reflection - 第11章接口interface与反射reflection