美文网首页
11-Go语言字典

11-Go语言字典

作者: 喝酸奶要舔盖__ | 来源:发表于2018-09-26 15:42 被阅读0次

字典

字典基本概念
  • 和数组以及切片一样, 字典是用来保存一组相同类型的数据的,数组和切片可以通过索引获得对应元素的值字典可以通过key获得对应元素的值
  • 数组和切片的索引是从0开始自动递增
    字典的key是需要我们手动设置

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

字典的初始化
  • 语法糖来初始化
   //1.创建字典的第一种方式
    //定义一个字典
    var dict map[int]int
    //给字典初始化
    dict = map[int]int{0:1,1:3,2:5}
    fmt.Println(dict)
    fmt.Println(len(dict))
    //通过key可以修改字典
    dict[0] = 666
    fmt.Println(dict)
    //通过key来查找对应的值
    fmt.Println(dict[0])

    //通过语法糖初始化字典
    dict := map[string]string{"name" : "lnj", "age" : "18"}
    fmt.Println(dict)
    fmt.Println(len(dict))
  • make(字典数据类型,长度)初始化
    指定字典的长度
   //2.创建字典的第二种方式
    var dict map[int]int
    //通过make函数初始化,指定字典的长度
    //在企业开发中,如果事先知道字典中需要保存多少条数据, 那么建议指定字典的长度
    dict = make(map[int]int,3)
    fmt.Println(dict)
    fmt.Println(len(dict))
    dict[0] = 1
    dict[1] = 3
    dict[2] = 5
    dict[3] = 6
    fmt.Println(dict)
    fmt.Println(len(dict))
  • make(字典数据类型)初始化
    不指定字典的长度
//3.创建字典的第三种方式
    //通过make函数初始化字典,不指定字典长度
    dict := make(map[int]int)
    fmt.Println(dict)
    dict[0] = 1
    dict[1] = 3
    dict[2] = 5
    dict[3] = 7
    fmt.Println(dict)

字典的遍历
  • 使用for..range遍历字典
for key, value := range dict {
    fmt.Println("key = ",key, "value = ", value)
}

字典的操作
  • 增加操作
    • 字典名称[key] = value , 如果字典中没有对应的key,则代表增加该key和value
  • 修改操作
    • 字典名称[key] = value,如果字典中有对应的key,则代表修改key对应的值
  • 查询操作
    • value ok := 字典名称[key]
  • 删除操作
    • delete(字典变量, key),会将指定字典中指定key的值删除
package main

import "fmt"

func main() {
    /*
    注意点:
    字典中不能有同名的key
    */

    var dict map[string]string
    //初始化字典
    dict = make(map[string]string, 2)


    //字典增加数据
    dict["name"] = "lnj"//没有key代表增加
    dict["age"] = "18"
    //字典修改数据
    dict["name"] = "zs" //有key代表修改值
    fmt.Println(dict) //map[age:18 name:zs]

    //字典查询数据
    value, ok := dict["name"]
    fmt.Println(ok) //true
    fmt.Println(value)

    value, ok := dict["gender"]
    fmt.Println(ok) //false
    fmt.Println(value)

    //企业开发中标准写法
    if value, ok := dict["age"]; ok {
        fmt.Println(ok)
        fmt.Println(value)
    }
    //删除操作
    dict := map[string]string{"name" : "wjh","age": "18"}
    delete(dict,"age")//删除key和对应的value
    fmt.Println(dict)
}


字典地址传递
  • 字典之间的赋值和切片之间的赋值一样, 是地址传递所以字典作为函数的参数, 修改形参会影响到实参
  • 注意点:字典和数组以及切片不一样, 数组和切片保存的数据是有序的, 而字典保存的数据是无序的
package main

import "fmt"

func main() {
    //字典是地址传递
    dict1 := map[string]string{"name":"lnj","age":"18"}
    var dict2 map[string]string
    dict2 = dict1
    fmt.Println(dict1) //修改前map[name:lnj age:18]
    dict2["name"] = "wjh"
    fmt.Println(dict1) //修改后map[name:wjh age:18]

    //作为函数参数时候
    change(dict1)
    fmt.Println(dict1) //map[name:zs age:18]
}

func change(dict map[string]string)  {
    dict["name"] = "zs"
}

相关文章

  • 11-Go语言字典

    字典 字典基本概念 和数组以及切片一样, 字典是用来保存一组相同类型的数据的,数组和切片可以通过索引获得对应元素的...

  • python基础知识入门2

    字典(dictionary) 字典在某些语言中可能称为 联合内存 (associative memories) 或...

  • Go语言字典

    什么是字典 Go语言字典和数组一样,是来保存一组相同的数据类型的 Go语言字典可以通过key值来获取数据 格式:v...

  • Q语言——字典

    前言 字典是由键列表和值列表(Key-Value)之间的显式关联映射。这两个列表必须具有相同的长度,并且键列表应该...

  • 基础·数据容器·字典

    Python基础教程 字典==================== 字典对应其它语言中的Map,概念并不难以理解。...

  • Python 基础语法六-dict 和 set

    字典 (dict) 字典(dictionary),其他开发语言中也有称为 map 的,使用键值对(key-valu...

  • 11-Go语言数组和切片-指趣学院

    数组 和C语言一样,Go语言中也有数组的概念, Go语言中的数组也是用于保存一组相同类型的数据 和C语言一样,Go...

  • 3.dict和set

    dict字典 dict全称dictionary,即字典。在其他语言中也称为map,使用键-值(key-value)...

  • Python字典详解(dict)

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map。 字典demo...

  • python day2 知识点归纳

    dict(字典) Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为ma...

网友评论

      本文标题:11-Go语言字典

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