Go(4 [Map])
标签:
JavaScript
Map简介:
key-value的数据结构,又叫字典或关联数组
Map数据结构:
map是引用类型
写法:var map1 map[keytype]valuetype
一:字典声明
注意:声明是不会分配内存的,初始化需要make
所以:可以简写为 test :=make(map[string]int,10)
--> 创建一个test字典: key类型为string,value类型为int,长度为10. (如果超出会panic,index out of range)
var map1 map[keytype]valuetype
var a map[string]string
var a map[string]int
var a map[int]string
var a map[string]map[string]string
1 | var a map[string]inta = make(map[string]int, 10 )a[ "abc" ] = 200 a[ "abc" ] = 1200 a[ "hello" ] = 222 |
二:Map操作
1 | var c map[string]string = map[string]string{ "hi" : "word" }c[ "cc" ] = "aaa" |
插入:
1 | a[“hello”] = “world” |
查找:
1 | //字典查找:通过key查找val.// --返回 2 个元素,一个是val,一个是布尔值//字典查找key时,如果只指定一个返回值,那找不到就是 0 //这种方法,不好确定,如果val是 0 呢? 那就尴尬了Val,exist:= a[“hello”]if exist{ fmt.Printf( "val=%d\n" ,ok)}else { fmt.Printf( "not found %s\n" ,val)} |
遍历:
1 | for k,v :=range a{ fmt.Println( "for" ,k,v)} |
删除:
1 | //a字典//hello is keydelete(a, "hello" ) |
长度:len(a)
示例:函数传递字典
1 | func test 2 (a map[string]int) { a[ "one" ] = 134 }func mian(){//map 是引用类型,所有会修改原有mapa := make(map[string]int, 10 )test 2 (a)} |
三:map中创建切片
栗子1:
1 | func test 4 () { aa := make([]map[int]int, 5 ) for i := 0 ; i < 5 ; i++ { aa[i] = make(map[int]int) aa[i][ 2 ] = 2 } fmt.Println( "test4" ,aa)}>>>test 4 [map[ 2: 2 ] map[ 2: 2 ] map[ 2: 2 ] map[ 2: 2 ] map[ 2: 2 ]] |
栗子2:
1 | func test3() { //创建切片, //切片里面放置map //默认map都是nil,需要赋值 s:=make([]map[string]int,10) for i:=0;i<len(s);i++{ //赋值初始化 //100是map的容量.如果超了。底层会自动扩容 s[i] = make(map[string]int,100) } s[0]["aaa"]=100 s[0]["acc"]=100 s[0]["1aa"]=100 s[2]["ccc"]=100 fmt.Println("sss",s)}>>>sss [map[aaa:100 acc:100 1aa:100] map[] map[ccc:100] map[] map[] map[] map[] map[] map[] map[]] |
四:Map排序
先获取所有key,把key排序
按照拍好序的key,进行遍历
1 | var keys []stringfor k, v := range a { fmt.Printf( "a[%s] = %d\n" , k, v) keys = append(keys, k)}sort.Strings(keys)for _, k := range keys { fmt.Printf( "Sort,a[%s]=%d\n" , k, a[k])} |
声明是不会分配内存的,初始化需要make
点击查看更多内容
为 TA 点赞
0 评论
共同学习,写下你的评论
暂无评论
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦