55_Go基础_1_22 map 基本用法
1 package main 2 3 import "fmt" 4 5 func main() { 6 /* 7 map:映射,是一种专门用于存储键值对的集合。属于引用类型 8 9 存储特点: 10 A:存储的是无序的键值对 11 B:键不能重复,并且和value值一一对应的。 12 map中的key不能重复,如果重复,那么新的value会覆盖原来的,程序不会报错。 13 14 语法结构: 15 1.创建map 16 var map1 map[key类型]value类型 17 nil map,无法直接使用 18 19 var map2 = make(map[key类型])value类型 20 21 var map3 = map[key类型]value类型{key:value,key:value,key:value...} 22 23 2.添加/修改 24 map[key]=value 25 如果key不存在,就是添加数据 26 如果key存在,就是修改数据 27 28 3.获取 29 map[key]-->value 30 31 value,ok := map[key] 32 根据key获取对应的value 33 如果key存在,value就是对应的数据,ok为true 34 如果key不存在,value就是值类型的默认值,ok为false 35 36 4.删除数据: 37 delete(map,key) 38 如果key存在,就可以直接删除 39 如果key不存在,删除失败 40 41 5.长度: 42 len() 43 44 45 每种数据类型: 46 int:0 47 float:0.0-->0 48 string:"" 49 array:[00000] 50 51 slice:nil 52 map:nil 53 54 */ 55 56 // 1.创建map 57 var map1 map[int]string // 没有初始化,nil 58 var map2 = make(map[int]string) // 创建,初始化 59 var map3 = map[string]int{"Go": 98, "Python": 87, "Java": 79, "Html": 93} 60 fmt.Println(map1) // map[] 61 fmt.Println(map2) // map[] 62 fmt.Println(map3) // map[Go:98 Html:93 Java:79 Python:87] 63 64 fmt.Println(map1 == nil) // true 65 fmt.Println(map2 == nil) // false 66 fmt.Println(map3 == nil) // false 67 68 // 2.nil map 69 if map1 == nil { 70 map1 = make(map[int]string) 71 fmt.Println(map1 == nil) // false 72 } 73 74 // 3.存储键值对到map中 75 // map1[key] = value 76 map1[1] = "hello" // 如果没有初始化,panic: assignment to entry in nil map 77 map1[2] = "world" 78 map1[3] = "memeda" 79 map1[4] = "王二狗" 80 map1[5] = "ruby" 81 map1[6] = "三胖思密达" 82 map1[7] = "" 83 84 // 4.获取数据,根据key获取对应的value值 85 // 根据key获取对应的value,如果key存在,获取数值,如果key不存在,获取的是value值类型的零值 86 fmt.Println(map1) // map[1:hello 2:world 3:memeda 4:王二狗 5:ruby 6:三胖思密达 7:] 87 fmt.Println(map1[4]) // 根据key为4,获取对应的value值 王二狗 88 fmt.Println(map1[40]) // "" 89 90 v1, ok := map1[40] 91 if ok { 92 fmt.Println("对应的数值是:", v1) 93 } else { 94 fmt.Println("操作的key不存在,获取到的是零值:", v1) // 操作的key不存在,获取到的是零值: 95 } 96 97 // 5.修改数据 98 fmt.Println(map1) // map[1:hello 2:world 3:memeda 4:王二狗 5:ruby 6:三胖思密达 7:] 99 map1[3] = "如花" 100 fmt.Println(map1) // map[1:hello 2:world 3:如花 4:王二狗 5:ruby 6:三胖思密达 7:] 101 102 // 6.删除数据 103 delete(map1, 3) 104 fmt.Println(map1) // map[1:hello 2:world 4:王二狗 5:ruby 6:三胖思密达 7:] 105 delete(map1, 30) 106 fmt.Println(map1) // map[1:hello 2:world 4:王二狗 5:ruby 6:三胖思密达 7:] 107 108 // 7.长度 109 fmt.Println(len(map1)) // 6 110 111 }