美文网首页
Go语言字典

Go语言字典

作者: AuglyXu | 来源:发表于2018-09-26 13:39 被阅读0次

    什么是字典

    • Go语言字典和数组一样,是来保存一组相同的数据类型的

    • Go语言字典可以通过key值来获取数据

    • 格式:
      var 字典名称 map[key数据类型]value数据类型


    定义字典的方式

    • 通过Go语言语法糖创建

      • var dict map[string]string = map[string]string{"name":"xxz" , "age":"18"}
      • dict := map[string]string{"name":"lnj", "age":"18"}
    • 通过make函数来创建

      • make(数据类型,字典长度)
       dict = make(map[string]string,3)
       dict["key"] = "value"
    
    • 通过make函数来创建(省略长度)
      • make(字典数据类型)
    dict = make(map[string]string)
    dict["key"] = "value"
    

    定义字典的注意点

    1. 和切片一样,通过var 字典名称 map[key数据类型]value数据类型定义的字典不能直接使用,需要对字典进行初始化
    //var dict map[string]string = map[string]string{"name" ; "xxz","age":"18"}
    var dict map[string]string
    dict = map[string]string{"name" ; "xxz","age":"18"}
    

    2.在企业开发中通过make函数创建字典,如果知道字典的长度,那么尽量把字典的长度写上,有助于提高性能
    3.如果字典的长度没有写,那么在添加字典的时候,底层会自动做扩容操作
    4.字典中没有两个相同的key值,所以定义的时候不可以定义两个相同的key


    字典的遍历

    var dict map[string]string = map[string]string{"name" ; "xxz","age":"18"}
    for key,value := range dict{
          fmt.Println("key = ", key, "value = ", value)
    }
    
    

    字典的增删改查

    现有一字典var dict map[string]string = map[string]string{"name" ; "xxz","age":"18"}

    • 增加
      dict["key"] = "value"
      如果字典的没有对应的key值就是增加


    • del (字典名称,key值)
      会将指定字典中指定的key值删除


    • dict["key"] = "value"
      如果字典的有对应的key值就是修改


    • value,ok := dict["key"]
      如果存在key,对应的值返回给value,True返回给ok
      如果不存在,value接收到值数据类型对应的零值(int为0,字符串为""),False返回给ok

      企业开发中判断是否存在某个值的写法

    if value,ok := dict["key"];ok{
      fmt.Println(value)
      fmt.Println(ok)
    }
    

    字典作为函数参数

    • 字典作为函数参数是地址传递,修改形参的值会影响到实参
        var dict1 map[string]string = map[string]string{"name": "xxz", "age": "18"}
        //var dict2 map[string]string
        //dict2 = dict1
        fmt.Println(dict1)
        //dict2["name"] = "zs"
        change(dict1)
        fmt.Println(dict1)
    }
    
    func change(dict2 map[string]string)  {
        dict2["name"] = "zs"
    }
    
    • 字典注意点补充:字典和数组切片不一样,字典保存的数据是无序的

    相关文章

      网友评论

          本文标题:Go语言字典

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