八、Goalng 之 map

597 阅读1分钟

Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。

map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。

map的定义

map[KeyType]ValueType
//KeyType:表示键的类型。
//ValueType:表示键对应的值的类型。
var student map[string]string

map 是一个引用类型的数据,需要初始化来使用分配内存,默认初始值为 nil 通过make函数来初始化 make(map[KeyType]ValueType, [cap]),cap是map 的容量。

其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。

var map1 = make(map[string]string,3)

map 的使用

var map1 = make(map[string]string,3)
map1["name"] = "晚风"
map1["sex"] = "男"
map1["age"] = "25"

map也支持在声明时填充元素

var map1 = map[string]int{
    "num1":1,
    "num2":2,
}

判断map 的某个键是否存在

var map1 = map[string]int{
    "name":23,
    "age":43,
}

v,ok := map1["age"]
fmt.Println(v,ok)

map的遍历

var stu = map[string]string{
    "name":"晚风",
    "class":"68班",
}

key,value := range stu{
    fmt.Println(key,value)
}
//如果只需要key那么只用一个参数
key := range stu{
    fmt.Println(key)
}

删除键值对

delete(stu,"class")

元素为map类型的切片

var list = make([]map[string]string,0,1)
list = append(list,map[string]string{
    "name":"晚风",
})
//循环添加
var list2 = make([]map[int]int,0,10)
var item = make(map[int]int,10)
for i:=0;i<10;i++{
  item[i]=i
  list2 = append(list2,item)
}

元素为切片类型的map

var class =  make(map[string][]int,1)
class["stu"] = [1,2,3,4,5]