8Go语言基础之map

本文是李文周的博客go语言学习之路的目录提要版,方便复习查看使用,原文参见文章连接:

https://www.liwenzhou.com/posts/Go/go_menu/

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

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

map总结

map定义:

scoreMap := make(map[string]int, 8)  scoreMap["张三"]=90

判断某个键是否存在

value,ok := map[key]

map的遍历:

for k,v := range scoreMap{
    fmt.Println(k,v)
}
for k :=range scoeMap{
    fmt.Println(k)
}

使用delete()函数删除键值对

delete(map, key)

元素为map类型的切片:

func main() {
	var mapSlice = make([]map[string]string, 3)
	for index, value := range mapSlice {
		fmt.Printf("index:%d value:%v\n", index, value)
	}
	fmt.Println("after init")
	// 对切片中的map元素进行初始化
	mapSlice[0] = make(map[string]string, 10)
	mapSlice[0]["name"] = "小王子"
	mapSlice[0]["password"] = "123456"
	mapSlice[0]["address"] = "沙河"
	for index, value := range mapSlice {
		fmt.Printf("index:%d value:%v\n", index, value)
	}
}

值为切片类型的map

func main() {
	var sliceMap = make(map[string][]string, 3)
	fmt.Println(sliceMap)
	fmt.Println("after init")
	key := "中国"
	value, ok := sliceMap[key]
	if !ok {
		value = make([]string, 0, 2)
	}
	value = append(value, "北京", "上海")
	sliceMap[key] = value
	fmt.Println(sliceMap)
}map的值为切片类型时,修改value的值的时候,要把值重新赋给map[key]

练习:

type Map map[string][]int
m := make(Map)
s := []int{1, 2}
s = append(s, 3)
fmt.Printf("%+v\n", s) // s: 1,2,3
m["q1mi"] = s // m["q1mi"]指向底层数组的引用
s = append(s[:1], 3) // s[:1]添加了一个3,则,底层数组变成1,3,3
fmt.Printf("%+v\n", s) // append方法返回了新的数组给s,s为1,3
fmt.Printf("%+v\n", m["q1mi"])// 之前的数组已经改为1,3,3
发布了32 篇原创文章 · 获赞 1 · 访问量 4821

猜你喜欢

转载自blog.csdn.net/weixin_42426385/article/details/104216634