Go语言字典

什么是字典

  • 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"
}
  • 字典注意点补充:字典和数组切片不一样,字典保存的数据是无序的
    原文作者:AuglyXu
    原文地址: https://www.jianshu.com/p/24c757f6ffbf
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞