This commit is contained in:
Unknwon
2015-02-21 03:10:05 -05:00
parent 19b7cd9899
commit 885d84ca62
4 changed files with 58 additions and 49 deletions

View File

@@ -9,7 +9,7 @@
## 翻译进度
8.1 [声明、初始化和 make](eBook/08.1.md)
8.2 [测试键值对是否存在及删除元素](eBook/08.2.md)
## 支持本书

View File

@@ -1,39 +1,42 @@
# 8.2 测试键值对是否存在及删除元素
188
测试 map1 中是否存在 key1
测试map1中是否存在key1
在例子 8.1 中,我们已经见过可以使用 `val1 = map1[key1]` `的方法获取 key1 对应的值 val1。如果 map 中不存在 key1val1 就是一个值类型的空值。
在例子8.1中我们已经见过可以使用val1 = map1[key1]的方法获取key1对应的val1。如果map中不存在key1val1就是一个值类型的空值。
这就会给我们带来困惑了:现在我们没法区分到底是 key1 不存在还是它对应的 value 就是空值。
这就会给我们带来困惑了现在我们没法区分到底是key1不存在还是它对应的value就是空值。
为了解决这个问题,我们可以这么用:`val1, isPresent = map1[key1]`
为了解决这个问题,我们可以这么用: val1, isPresent = map1[key1]
isPresent 返回一个 bool 值:如果 key1 存在于 map1val1 就是 key1 对应的 value 值,并且 isPresent为true如果 key1 不存在val1 就是一个空值,并且 isPresent 会返回 false。
isPresent返回一个bool值如果key1存在于map1val1就是key1对应的value值并且isPresent为true如果key1不存在val1就是一个空值并且isPresent会返回false。
如果你只是想判断某个 key 是否存在而不关心它对应的值到底是多少,你可以这么做:
如果你只是想判断某个key是否存在而不关心它对应的值到底是多少你可以这么做
```go
_, ok := map1[key1] // 如果key1存在则ok == true否在ok为false
```
_, ok := map1[key1] // 如果key1存在则ok == true否在ok为false
或者和 if 混合使用:
或者和if混合使用
if _, ok := map1[key1]; ok {
```go
if _, ok := map1[key1]; ok {
// ...
}
}
```
map1中删除key1
map1 中删除 key1
直接: delete(map1, key1)
直接 `delete(map1, key1)` 就可以。
如果key1不存在该操作不会产生错误。
如果 key1 不存在,该操作不会产生错误。
示例 8.4 [map_testelement.go](examples/chapter_8/map_testelement.go)
package main
import "fmt"
```go
package main
import "fmt"
func main() {
func main() {
var value int
var isPresent bool
@@ -60,7 +63,8 @@ isPresent返回一个bool值如果key1存在于map1val1就是key1对应的
} else {
fmt.Println("map1 does not contain Washington")
}
}
}
```
输出结果:
@@ -69,7 +73,8 @@ isPresent返回一个bool值如果key1存在于map1val1就是key1对应的
Value is: 0
map1 does not contain Washington
##链接
## 链接
- [目录](directory.md)
- 上一节:[声明,初始化和make](08.1.md)
- 下一节:[for循环构造方](08.3.md)
- 上一节:[声明初始化和 make](08.1.md)
- 下一节:[for-range 的配套用](08.3.md)

View File

@@ -1,4 +1,7 @@
#8.3 for循环构造方
# 8.3 for-range 的配套用
190
可以使用for循环构造map
for key, value := range map1 {

View File

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