Go基础笔记_4_map

map

1. 介绍

map 是一种特殊的数据结构,一种键值对(key-value)的无序集合。和数组切片不同,数组切片是有序的。

//map_name map变量名, key_type键类型,value_type 键对应的值类型
var map_name = make(map[key_type]value_type)

value_type 可以是切片

  • key不允许重复,不能是函数、映射或切片
  • map可以动态增长,未初始化时值是 nil
  • map中的键和值均不限制数据类型,键和值可分别使用不同的类型
  • 同一个map中所有键类型相同,所有值类型相同
// 如
map[string]int
map[*T]struct{
    
     x, y float64 }
map[string]interface{
    
    }

2. map使用

package main

import "fmt"

func main() {
    
    
    //创建map
	var dept = make(map[string]string)
	dept["A"] = "部门1"
	dept["B"] = "部门2"
	dept["C"] = "部门3"
	fmt.Println(dept)
}

// 结果,这里所有的键是string类型,所有的value是string类型
map[A:部门1 B:部门2 C:部门3]

在这里插入图片描述

注意:不能使用new创建map
如下编译时报错,得到一个空引用的指针,类似声明了一个未初始化的变量并且取了它的地址
在这里插入图片描述

3. 修改map中的值

如下,修改map中的值,重新赋值即可

package main

import "fmt"

func main() {
    
    
	var dept = make(map[string]string)
	// 赋值
	dept["A"] = "部门1"
	dept["B"] = "部门2"
	dept["C"] = "部门3"
	fmt.Println(dept)
    // 修改C的值
	dept["C"] = "部门CCC"
	fmt.Println(dept)
}

// 结果
map[A:部门1 B:部门2 C:部门3]
map[A:部门1 B:部门2 C:部门CCC]

4. map扩容

因此它不存在固定长度或者最大限制,但是也可以选择标明 map 的初始容量 capacity

make(map[key_type]value_type, cap)
var a = make(map[int]int, 3)

5. 应用

访问

package main

import "fmt"

func main() {
    
    
	var a = make(map[int]int, 3)
	a[0] = 1
	a[1] = 2
	a[2] = 3
	a[3] = 4
	for key, value := range a {
    
    
		fmt.Println("key:", key, "value:", value)
	}
}

// 结果
key: 0 value: 1
key: 1 value: 2
key: 2 value: 3
key: 3 value: 4

猜你喜欢

转载自blog.csdn.net/u010895512/article/details/125957284