1.5.5 map高级使用技巧

一、高级使用技巧

  1. Go语言中,map的主要作用是提供一个快速的查找、插入、删除的结构,同事具备与存储体量无关的、空间复杂度为O(1)的性能,并且支持键key的唯一性

  2. 对于Go语言的map数据类型来说,首先它是可变的,也就是可以随时进行修改;其次,它不是线程安全的

二、多维map的声明和遍历

  1. 多维map的声明格式如下:

    var m map[]map[KeyType_2]...map[KeyType_n]valueType

    备注:

    KeyType_1:等等表示map的键key类型,一定是可以比较的

    ValueType:可以是任意类型,甚至包括其他内联的map

  2. map在Go语言中属于索引类型,也就是作为方法的形参或返回类型时,传递的也是这个索引的地址,不是map的本体

  3. 其次,这个map在声明的时候是nil,如果没有初始化,则默认是nil

  4. 对于nilmap,可以对其任意位置随意取值,结果都是(nil, err),但如果对其设置一个新值,则会报错,需要初始化后才可以赋值

  5. 初始化方法:

    1. 直接初始化

      m := make(map[string]int)

      备注:简单举个初始化例子

    2. 定义时候直接赋值

      var m map[string]int = map[string]int{"barry":12, "tont":10}
    3. 初始化一个空map

      m = map[string]int{}
  6. 示例

    func map1() {
    	m := map[string]map[string]string{}
    	m["programmer"] = map[string]string{}
    	m["programmer"]["name"] = "snow"
    	m["manager"] = map[string]string{}
    	m["manager"]["goodAt"] = "Go"
    
    	fmt.Println(m["programmer"]["name"])
    	fmt.Println(m)
    
    	for key, value := range m {
    		for k, v := range value {
    			fmt.Println("K:", k, "V:", v)
    		}
    		fmt.Println("Key:", key, "Value:", value)
    	}
    }

    结果:

    snow
    map[manager:map[goodAt:Go] programmer:map[name:snow]]
    K: name V: snow
    Key: programmer Value: map[name:snow]
    K: goodAt V: Go
    Key: manager Value: map[goodAt:Go]

三、map多层嵌套的使用及遍历方法

  1. 可以使用for...range语句来处理多层嵌套,示例如下

    结果:

Last updated