Map
使用map集合
map和Java的一样,都是key-value类型
==但是区别在于map申明以后必须要使用make,让map获得内存==
map的使用:
第一种:
1 | var amap map[string]string |
第二种:
1 | amap:=make(map[string]string,10) |
第三种:
1 | amap := map[string]string{ |
注意点:
- 使用map以前,必须要使用make初始化容量,前面一个是类型,后面一个数据是容量,容量不代表长度,里面没有元素,长度就是一
- map的value可以重复,但是他的键值不可以重复
map的增删改查操作
增加和修改
直接新建一个,如果有这个键的话,那么就是更新,如果不是的话,那么就是修改
1 | amap := map[string]string{ |
删除
1 | delete(amap,"saxon")//map的名字和map的key |
查找
1 | amap := map[string]string{ |
如果map集合里面存储的也是一个map,那么我们就应该在把遍历出来的元素在遍历一次
map切片
就是可以动态遍历的map集合
map集合的添加,如果容量固定的话;
由于map是无序的,所以我们便利的时候,他的顺序也是不同的
1 | amap := map[string]string{ |
至于为何使用range遍历出来的无序的,在遍历之前,它生成了随机数。用于决定从哪里开始循环迭代。更具体的话就是根据随机数,选择一个桶位置作为起始点进行遍历迭代,因此每次重新 for range map,你见到的结果都是不一样的。那是因为它的起始位置根本就不固定!
map集合使用细节
map集合是引用类型,所以我们给函数传入的对象是一个map的时候,他会修改原来集合的值,因为他会直接修改指针的值
1 | func main() { |
map集合满了之后,会自动扩容



