【第三十九篇】Go Map的介绍和声明

425 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

一、Map 介绍:

map 是 key - value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合,在编程中是经常使用到的。

二、Map 的声明:

一、基本语法:

  • var map 变量名 map[keytype] value type
  1. valuetype 可以是什么类型
  2. valuetype 的类型和 key 基本一样,这里我就不再赘述了
  3. 通常为:数字(整数、浮点数),string ,map,struct

  • Key 可以是什么类型:
  1. golang 中 map 的 key 可以是多种类型,比如 bool 、数字、string 、指针、channel、还可以是只包含前面几个类型的接口、结构体、数组(通常为 int 、string)
  2. 注意:slice 、map 还有 function 不可以,因为这个几个没法用 == 来判断。

二、map 声明的举例:

  1. var a map [string]string
  2. var a map [string]int
  3. var a map [int]string
  4. var a map [string]map [string]string
  5. 注意:声明是不会分配内存的,初始化需要make,分配内存后才能赋值和使用。

三、案例演示:

package main

import "fmt"

func main() {

	// map 的声明和注意事项
	var a map[string]string

	// 在使用map前 ,需要先make ,make的作用就是给map分配数据空间
	a = make(map[string]string)
	a["no1"] = "宋江"
	a["no2"] = "吴用"
	a["no3"] = "吴用"
	a["no1"] = "武松"
	fmt.Println(a)
}

对上面代码的总结和说明:

  1. map 在使用前一定要 make
  2. map 的 key 是不能重复的,如果重复了,则以最后的 key - value为准 ,对应上面的“宋江”“武松”(类似于身份证,名字可以重复,但是身份证号是唯一的)
  3. map 的 key - value 是无序的(集合的本质就是无序的内存排列,其它的只是让他输出有序)

func make

func make(Type, size IntegerType) Type
  • 内建函数make分配并初始化一个类型为切片、映射、或通道的对象。其第一个实参为类型,而非值。make的返回类型与其参数相同,而非指向它的指针。其具体结果取决于具体的类型:
  1. 切片:size指定了其长度。该切片的容量等于其长度。切片支持第二个整数实参可用来指定不同的容量; 它必须不小于其长度,因此 make([]int, 0, 10) 会分配一个长度为0,容量为10的切片。
  2. 映射:初始分配的创建取决于size,但产生的映射长度为0。size可以省略,这种情况下就会分配一个 小的起始大小。
  3. 通道:通道的缓存根据指定的缓存容量初始化。若 size为零或被省略,该信道即为无缓存的。