Go语言学习笔记13.复合类型-map

map

可以说是每种语言必备的了,hash键值对,key->value,键值需要唯一。
map[keyType]valueType

使用

package main //必须有个main包

import "fmt"

func del(m map[int]string) {
   delete(m, 2)
}

func main() {
   
   var m1 map[int]string
   fmt.Println("m1 = ", m1)
   //对于map只有len,没有cap
   fmt.Println("len = ", len(m1))

   //可以通过make创建
   m2 := make(map[int]string)
   fmt.Println("m2 = ", m2)
   fmt.Println("len = ", len(m2))

   //可以指定长度,只是指定了容量,但是里面却是一个数据也没有
   m3 := make(map[int]string, 2)
   m3[1] = "c" //元素的操作
   m3[2] = "go"
   m3[3] = "c++"

   fmt.Println("m3 = ", m3)//m3 =  map[1:c 2:go 3:c++]
   fmt.Println("len = ", len(m3))//len =  3

   //初始化
   m4 := map[int]string{1: "c", 2: "go", 3: "c++"}
   fmt.Println("m4 = ", m4)//m4 =  map[1:c 2:go 3:c++]

   m4[1] = "c++"
   m4[4] = "java" //追加,map底层自动扩容,和append类似
   fmt.Println("m4 = ", m4)//m4 =  map[1:c++ 2:go 3:c++ 4:java]

   //遍历
   //第一个返回值为key, 第二个返回值为value, 遍历结果是无序的
   for key, value := range m4 {
       fmt.Printf("%d =======> %s\n", key, value)
   }

   //如何判断一个key值是否存在
   //第一个返回值为key所对应的value, 第二个返回值为key是否存在的条件,存在ok为true
   index := 0
   value, ok := m4[index]
   if ok == true {
       fmt.Println("value = ", value)
   } else {
       fmt.Println("key不存在 index = ",index) //key不存在 index =  0
   }

   delete(m4, 1) //删除key为1的内容
   fmt.Println("m4 = ", m4)//m4 =  map[2:go 3:c++ 4:java]
   
   del(m4)
   fmt.Println("m4 = ", m4)//m4 =  map[3:c++ 4:java]
}

你可能感兴趣的:(Go语言学习笔记13.复合类型-map)