Unknwon 11 éve
szülő
commit
885d84ca62
4 módosított fájl, 62 hozzáadás és 53 törlés
  1. 1 1
      README.md
  2. 55 50
      eBook/08.2.md
  3. 5 2
      eBook/08.3.md
  4. 1 0
      eBook/directory.md

+ 1 - 1
README.md

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

+ 55 - 50
eBook/08.2.md

@@ -1,66 +1,70 @@
 # 8.2 测试键值对是否存在及删除元素
 
-188
+测试 map1 中是否存在 key1:
 
-测试map1中是否存在key1:
+在例子 8.1 中,我们已经见过可以使用 `val1 = map1[key1]` `的方法获取 key1 对应的值 val1。如果 map 中不存在 key1,val1 就是一个值类型的空值。
 
-在例子8.1中,我们已经见过可以使用val1 = map1[key1]的方法获取key1对应的值val1。如果map中不存在key1,val1就是一个值类型的空值。
+这就会给我们带来困惑了:现在我们没法区分到底是 key1 不存在还是它对应的 value 就是空值。
 
-这就会给我们带来困惑了:现在我们没法区分到底是key1不存在还是它对应的value就是空值。
+为了解决这个问题,我们可以这么用:`val1, isPresent = map1[key1]`
 
-为了解决这个问题,我们可以这么用: val1, isPresent = map1[key1]
+isPresent 返回一个 bool 值:如果 key1 存在于 map1,val1 就是 key1 对应的 value 值,并且 isPresent为true;如果 key1 不存在,val1 就是一个空值,并且 isPresent 会返回 false。
 
-isPresent返回一个bool值:如果key1存在于map1,val1就是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混合使用:
+```go
+if _, ok := map1[key1]; ok {
+	// ...
+}
+```
 
-	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"
-
-    func main() {
-    	var value int
-    	var isPresent bool
-
-    	map1 := make(map[string]int)
-    	map1["New Delhi"] = 55
-    	map1["Beijing"] = 20
-    	map1["Washington"] = 25
-    	value, isPresent = map1["Beijing"]
-    	if isPresent {
-    		fmt.Printf("The value of \"Beijin\" in map1 is: %d\n", value)
-    	} else {
-    		fmt.Printf("map1 does not contain Beijing")
-    	}
-
-    	value, isPresent = map1["Paris"]
-    	fmt.Printf("Is \"Paris\" in map1 ?: %t\n", isPresent)
-    	fmt.Printf("Value is: %d\n", value)
-
-    	// delete an item:
-    	delete(map1, "Washington")
-    	value, isPresent = map1["Washington"]
-    	if isPresent {
-    		fmt.Printf("The value of \"Washington\" in map1 is: %d\n", value)
-    	} else {
-    		fmt.Println("map1 does not contain Washington")
-    	}
-    }
+```go
+package main
+import "fmt"
+
+func main() {
+	var value int
+	var isPresent bool
+
+	map1 := make(map[string]int)
+	map1["New Delhi"] = 55
+	map1["Beijing"] = 20
+	map1["Washington"] = 25
+	value, isPresent = map1["Beijing"]
+	if isPresent {
+		fmt.Printf("The value of \"Beijin\" in map1 is: %d\n", value)
+	} else {
+		fmt.Printf("map1 does not contain Beijing")
+	}
+
+	value, isPresent = map1["Paris"]
+	fmt.Printf("Is \"Paris\" in map1 ?: %t\n", isPresent)
+	fmt.Printf("Value is: %d\n", value)
+
+	// delete an item:
+	delete(map1, "Washington")
+	value, isPresent = map1["Washington"]
+	if isPresent {
+		fmt.Printf("The value of \"Washington\" in map1 is: %d\n", value)
+	} else {
+		fmt.Println("map1 does not contain Washington")
+	}
+}
+```
 
 输出结果:
 
@@ -69,7 +73,8 @@ isPresent返回一个bool值:如果key1存在于map1,val1就是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)

+ 5 - 2
eBook/08.3.md

@@ -1,4 +1,7 @@
-#8.3 for循环构造方法
+# 8.3 for-range 的配套用法
+
+190
+
 可以使用for循环构造map:
 
 	for key, value := range map1 {
@@ -21,7 +24,7 @@
 
     package main
     import "fmt"
-    
+
     func main() {
     	map1 := make(map[int]float32)
     	map1[1] = 1.0

+ 1 - 0
eBook/directory.md

@@ -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)