mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 23:08:34 +08:00
8.3
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
## 翻译进度
|
||||
|
||||
8.2 [测试键值对是否存在及删除元素](eBook/08.2.md)
|
||||
8.3 [for-range 的配套用法](eBook/08.3.md)
|
||||
|
||||
## 支持本书
|
||||
|
||||
|
@@ -1,40 +1,46 @@
|
||||
# 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 {
|
||||
...
|
||||
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: 下面这段代码的输出是什么?
|
||||
|
||||
capitals := map[string] string {"France":"Paris", "Italy":"Rome", "Japan":"Tokyo" }
|
||||
for key := range capitals {
|
||||
fmt.Println("Map item: Capital of", key, "is", capitals[key])
|
||||
}
|
||||
```go
|
||||
capitals := map[string] string {"France":"Paris", "Italy":"Rome", "Japan":"Tokyo" }
|
||||
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。
|
||||
|
||||
##链接
|
||||
## 链接
|
||||
|
||||
- [目录](directory.md)
|
||||
- 上一节:[删除元素](08.2.md)
|
||||
- 下一节:[maps分片](08.4.md)
|
||||
- 上一节:[测试键值对是否存在及删除元素](08.2.md)
|
||||
- 下一节:[map 分片](08.4.md)
|
||||
|
@@ -1,4 +1,7 @@
|
||||
#8.3 map分片
|
||||
# 8.3 map 分片
|
||||
|
||||
191
|
||||
|
||||
假设我们想获取一个map的分片,我们必须使用两次make()方法,第一次分配slice,第二次分配slice的每个map元素(参见下面的例子8.3)。
|
||||
|
||||
示例 8.3 [maps_forrange.go](examples/chapter_8/maps_forrange.go)
|
||||
|
@@ -69,6 +69,7 @@
|
||||
- 8.1 [声明、初始化和 make](08.1.md)
|
||||
- 8.2 [测试键值对是否存在及删除元素](08.2.md)
|
||||
- 8.3 [for-range 的配套用法](08.3.md)
|
||||
- 8.4 [map 分片](08.4.md)
|
||||
- 第9章:包(package)
|
||||
- 第10章:结构(struct)与方法(method)
|
||||
- 第11章:接口(interface)与反射(reflection)
|
||||
|
Reference in New Issue
Block a user