package main

import "fmt"

func MapMake() {
	var countryCapitalMap map[string]string     /*创建map */
	countryCapitalMap = make(map[string]string) // 初始化map,如果不进行初始化会提示: panic: assignment to entry in nil map

	/* map插入key - value对,各个国家对应的首都 */
	countryCapitalMap["France"] = "巴黎"
	countryCapitalMap["Italy"] = "罗马"
	fmt.Println("当前Map内容: ", countryCapitalMap)
	/*使用键输出地图值 */
	for key := range countryCapitalMap {
		fmt.Println(key, "首都是", countryCapitalMap[key])
	}
}

func MapCreate() {
	// 直接创建并赋值
	m := map[string]string{"名字": "刘德华", "年龄": "18岁"}
	fmt.Println("初始Map内容: ", m)
	m["职业"] = "开发工程师" // 追加内容
	fmt.Println("追加元素之后的Map内容: ", m)
	delete(m, "职业") // 删除职业信息
	fmt.Println("删除元素之后的map内容: ", m)
	m["年龄"] = "20岁" // 更新内容
	fmt.Println("更新内容之后的map内容: ", m)
	user, ok := m["名字"] // 通过key获取value
	if ok {
		fmt.Println("当前【名字】的值是: ", user)
	} else {
		fmt.Println("无法找到Key值: 名字")
	}
}
func main() {
	fmt.Println("第一种创建方式")
	MapMake()
	fmt.Println("第二种创建方式")
	MapCreate()
}

效果如下

PS D:\DATA\git\GoLang\dmeo> go run .\map.go
第一种创建方式
当前Map内容:  map[France:巴黎 Italy:罗马]
France 首都是 巴黎
Italy 首都是 罗马
第二种创建方式
初始Map内容:  map[名字:刘德华 年龄:18岁]
追加元素之后的Map内容:  map[名字:刘德华 年龄:18岁 职业:开发工程师]
删除元素之后的map内容:  map[名字:刘德华 年龄:18岁]
更新内容之后的map内容:  map[名字:刘德华 年龄:20岁]
当前【名字】的值是:  刘德华