Go map类型

//is_nil2:=map[string]int  不能直接这么定义空的map

 

 

func map3() {
	//is_nil2:=map[string]int  不能直接这么定义空的map
	name_to_ago:=make(map[string]int,8)  //需要使用make()函数来分配内存
	fmt.Println(name_to_ago)
	name_to_ago2:=map[string]int{
		"小明":19,
		"老王":33,
	}
	fmt.Println(name_to_ago2) //map[小明:19 老王:33]

	//map 初始值为nil类型 map[KeyType]ValueType
	is_nil:=make(map[string]int,8)
	fmt.Println(is_nil==nil)

	val,ok:=name_to_ago2["小明"] //有的话值 int 和 True
	fmt.Println(val,ok) //19 true
	val2,ok2:=name_to_ago2["老明"] //没有的话返回 类型的null值(例如int的null为0 ) 和 false
	fmt.Println(val2,ok2) //0 false

	//map的遍历
	for k, v := range name_to_ago2 {
		fmt.Println(k, v)
	}
	//delete(map, key)
	delete(name_to_ago2,"小明")
	fmt.Println(name_to_ago2)//删了 小明

	//取出map中的所有key存入切片keys
	//元素为map类型的切片
	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
	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)


}

  

posted on 2020-05-27 15:13  谢Rain  阅读(180)  评论(0编辑  收藏  举报