1.map
- map是一种无序的键值集合- 通过key快速检索数据,类似于索引,指向数据的值- 是一种集合,可以迭代,因为是无序的,所以返回结果不是固定的
2.定义Map
func main() { //1.使用make创建 //make(map[KeyType]ValueType,initialCapacity) //KeyType 键类型,ValueType 值类型 initialCapacity 初始容量 可选 map1 := make(map[string]int) //创建空的map map2 := make(map[string]int, 10) //创建容量为10的map map1["1"]=1 fmt.Println(map1["1"], map2) // 2.map关键字定义 var m map[string]int var m1 = map[string]int{ "apple": 1, //key,value "banana": 2, "orange": 3, } fmt.Println(m) fmt.Println(m1["apple"])}
3.Map的使用
func main(){ //创建初始化map map1 :=make(map[int]string) //- map[key] = value 。将vaule赋值给对应的map的key map1[1]="java" map1[1]="java+" //如果key存在,就会覆盖原有的值, map1[2]="golang" map1[3]="pythone" fmt.Println(map1) //- 判断key是否存在,value, ok = map[key] value,key:=map1[1] if key{ fmt.Println("key存在:",key,"value值是:",value) }else{ fmt.Println("key不存在") } //- 删除map中的元素, delete(map,key) delete(map1,3) fmt.Println(map1) //- 新增 map[key] = value map1[4]="php" fmt.Println(map1) //- 修改 map[key] = value ,如果存在这个key就是修改。 map1[4]="php+" fmt.Println(map1) //- 查看map的大小, len(map) fmt.Println(len(map1)) }
4.遍历Map
func main(){ //创建初始化map map1:=make(map[int]string) map1[1]="QQ" map1[2]="WW" map1[3]="EE" map2:=map[string]int{"1":1,"2":2,"3":3} //for key,value range map{} 遍历map //因map是无序的,所以每次输出顺序可能不一样 for k, v := range map1 { fmt.Print(k,v) } for k,v :=range map2{ fmt.Print(k,v) } }
5.map结合slice使用
func main() { //创建map保存信息 map1 := make(map[string]string) map1["name"] = "李一" map1["sex"] = "男" map1["age"] = "20" map2 := map[string]string{ "name": "李二", "sex": "男", "age": "34", } //创建切片并放入数据 userDatas := make([]map[string]string, 2, 3) userDatas = append(userDatas, map1) userDatas = append(userDatas, map2) //for range 输出信息 for key, value := range userDatas { fmt.Println("key:", key) fmt.Println(value["age"]) }}