1.map

  1. - map是一种无序的键值集合
  2. - 通过key快速检索数据,类似于索引,指向数据的值
  3. - 是一种集合,可以迭代,因为是无序的,所以返回结果不是固定的

2.定义Map

  1. func main() {
  2. //1.使用make创建
  3. //make(map[KeyType]ValueType,initialCapacity)
  4. //KeyType 键类型,ValueType 值类型 initialCapacity 初始容量 可选
  5. map1 := make(map[string]int) //创建空的map
  6. map2 := make(map[string]int, 10) //创建容量为10的map
  7. map1["1"]=1
  8. fmt.Println(map1["1"], map2)
  9. // 2.map关键字定义
  10. var m map[string]int
  11. var m1 = map[string]int{
  12. "apple": 1, //key,value
  13. "banana": 2,
  14. "orange": 3,
  15. }
  16. fmt.Println(m)
  17. fmt.Println(m1["apple"])
  18. }

3.Map的使用

  1. func main(){
  2. //创建初始化map
  3. map1 :=make(map[int]string)
  4. //- map[key] = value 。将vaule赋值给对应的map的key
  5. map1[1]="java"
  6. map1[1]="java+" //如果key存在,就会覆盖原有的值,
  7. map1[2]="golang"
  8. map1[3]="pythone"
  9. fmt.Println(map1)
  10. //- 判断key是否存在,value, ok = map[key]
  11. value,key:=map1[1]
  12. if key{
  13. fmt.Println("key存在:",key,"value值是:",value)
  14. }else{
  15. fmt.Println("key不存在")
  16. }
  17. //- 删除map中的元素, delete(map,key)
  18. delete(map1,3)
  19. fmt.Println(map1)
  20. //- 新增 map[key] = value
  21. map1[4]="php"
  22. fmt.Println(map1)
  23. //- 修改 map[key] = value ,如果存在这个key就是修改。
  24. map1[4]="php+"
  25. fmt.Println(map1)
  26. //- 查看map的大小, len(map)
  27. fmt.Println(len(map1))
  28. }

4.遍历Map

  1. func main(){
  2. //创建初始化map
  3. map1:=make(map[int]string)
  4. map1[1]="QQ"
  5. map1[2]="WW"
  6. map1[3]="EE"
  7. map2:=map[string]int{"1":1,"2":2,"3":3}
  8. //for key,value range map{} 遍历map
  9. //因map是无序的,所以每次输出顺序可能不一样
  10. for k, v := range map1 {
  11. fmt.Print(k,v)
  12. }
  13. for k,v :=range map2{
  14. fmt.Print(k,v)
  15. }
  16. }

5.map结合slice使用

  1. func main() {
  2. //创建map保存信息
  3. map1 := make(map[string]string)
  4. map1["name"] = "李一"
  5. map1["sex"] = "男"
  6. map1["age"] = "20"
  7. map2 := map[string]string{
  8. "name": "李二",
  9. "sex": "男",
  10. "age": "34",
  11. }
  12. //创建切片并放入数据
  13. userDatas := make([]map[string]string, 2, 3)
  14. userDatas = append(userDatas, map1)
  15. userDatas = append(userDatas, map2)
  16. //for range 输出信息
  17. for key, value := range userDatas {
  18. fmt.Println("key:", key)
  19. fmt.Println(value["age"])
  20. }
  21. }