美文网首页一个程序猿的奋斗史php开发
Go语言学习笔记13.复合类型-map

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

作者: 快乐的提千万 | 来源:发表于2019-11-06 09:15 被阅读0次

    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

        本文链接:https://www.haomeiwen.com/subject/orkebctx.html