GO 中Map的使用

GO 中Map的使用

在go语言中,map是散列表(哈希表)的应用。他是拥有键值对元素的集合,在这个集合中,键是唯一的,可以通过键来获取、更新或者移除等操作。无论散列表有多大,这些操作基本上是通过常量时间完成的;所有可比较的类型,如整型、字符串,都可以作为key

  • 创建Map

    使用make函数传入键和值的类型;可以创建map;具体语法为make(map[keyType]valueType)

    func createMap() {
    	//创建一个key为string 值为string  map
    	mapList := make(map[string]string)
    	fmt.Println(mapList)
    	//创建一个key为string 值为int  map
    	mapList1 := make(map[string]int)
    	fmt.Println(mapList1)
    }
    
  • 给map赋值与添加、更新、获取等操作

    func valueToMap() {
    	mapList := map[string]string{
    		"第一魂技": "缠绕",
    		"第二魂技": "爆头",
    		"第三魂技": "眩晕",
    		"第四魂技": "蓝银囚笼",
    		"第五魂技": "兰英把武器",
    	}
    	//添加元素
    	mapList["第六魂技"] = "无敌金身"
    	fmt.Println(mapList) 
        //map[第一魂技:缠绕 第三魂技:眩晕 第二魂技:爆头 第五魂技:兰英把武器 第六魂技:无敌 金身 第四魂技:蓝银囚笼]
        
    	//更新元素
    	mapList["第一魂技"] = "万剑归中"
    	fmt.Println(mapList) 
        //map[第一魂技:万剑归中 第三魂技:眩晕 第二魂技:爆头 第五魂技:兰英把武器 第六魂技: 无敌金身 第四魂技:蓝银囚笼]
        
    	//获取元素
    	fmt.Println(mapList["第一魂技"])//万剑归中
        
        //删除元素
    	delete(mapList, "第一魂技")
    	fmt.Println(mapList) //map[第三魂技:眩晕 第二魂技:爆头 第五魂技:兰英把武器 第六魂技:无敌金身 第四魂技: 蓝银囚笼]
    
    	//判断键值是否存在
    	v2, ok := mapList["第二魂技"]
    	fmt.Println(v2) //爆头
    	fmt.Println(ok) //true
    
    	v1, ok := mapList["第一魂技"]
    	fmt.Println(v1) // 无值
    	fmt.Println(ok) //false
        
        //遍历map
    	for key, value := range mapList {
    		fmt.Printf("key:%s,value:%s\n", key, value)
    		/**
    		key:第二魂技,value:爆头
    		key:第三魂技,value:眩晕
    		key:第四魂技,value:蓝银囚笼
    		key:第五魂技,value:兰英把武器
    		key:第六魂技,value:无敌金身
    		 */
    	}
    	//获取map长度
    	fmt.Println(len(mapList))//5
    }
    
  • map是引用类型:当map被赋值为一个新的变量的时候,他们指向通一个内部数据结构,因此改变其中一个变量,就会影响到另外一个变量;注意:当map作为函数参数传递时也会发生同样的情况

你可能感兴趣的:(golang,开发语言,后端)