Go语言Map的基本使用

1、定义Map

  • map[key]value形式申明

  • make方式申明

package main

import "fmt"

func main() {
	m := map[string]string{"a": "1", "b": "2"} //冒号:定义
	fmt.Println(m)                             //map[a:1 b:2]

	m1 := make(map[string]string) //make关键字定义
	fmt.Println(m1)               //map[]

	var m2 = make(map[string]string) //make关键字定义
	fmt.Println(m2)                  //map[]

	var m3 map[string]string
	fmt.Println(m3)        //map[]
	fmt.Println(m3 == nil) //true

}

2、Map的遍历

使用range遍历(Map是无序的)

package main

import "fmt"

func main() {
   m := map[string]string{"a": "1", "b": "2"} //冒号:定义
   fmt.Println(m)                             //map[a:1 b:2]

   for k, v := range m {
      fmt.Println(fmt.Sprintf("key:%s, value:%s", k, v))
   }
   for k, _ := range m {
      fmt.Println(fmt.Sprintf("key:%s", k))
   }
   for _, v := range m {
      fmt.Println(fmt.Sprintf("value:%s", v))
   }
}

3、根据key取value以及判断是否存在key

package main

import "fmt"

func main() {
   m := map[string]string{"a": "1", "b": "2"} //冒号:定义
   fmt.Println(m)                             //map[a:1 b:2]

   a := m["a"] //1
   fmt.Println(a)
   c := m["c"] //""空串,并不会报错
   fmt.Println(c)

   //可以通过判断exist是否存在该key
   d, exist := m["d"] //""空串,并不会报错
   fmt.Println(d, exist)//根据exist是不是true判断是否存在
}

4、删除key

package main

import "fmt"

func main() {
   m := map[string]string{"a": "1", "b": "2"} //冒号:定义
   fmt.Println(m)                             //map[a:1 b:2]

   delete(m, "a") //删除存在的key
   fmt.Println(m) //map[b:2]

   delete(m, "c") //删除不存在的key也不会报错
   fmt.Println(m) //map[b:2]

}

5、可以作为Map的key的条件

  • map使用哈希表,必须可以比较相等

  • 除了slice、map、function的内建类型都可以作为key

  • 自定义的Struct类型,不包括slice、map、function字段,也可以作为key

posted @ 2022-06-14 21:40  南风丶轻语  阅读(115)  评论(0编辑  收藏  举报