1. 声明与初始化

	// map的声明与初始化
userInfo := map[string]string{"name": "马亚南", "age": "18"}
fmt.Println(userInfo)
fmt.Println(userInfo["name"]) // 马亚南
userInfo["age"] = "28"
fmt.Println(userInfo)
userInfo["email"] = "wupeiqi@live.com"
fmt.Println(userInfo) // 声明
var userInfo2 = map[string]string{}
userInfo2["age"] = "88"
fmt.Println(userInfo2) // make创建map
data := make(map[int]int)
data[100] = 998
data[200] = 999
fmt.Println(data) // 只有声明,nil ,无法设置
var row map[int]int // 这种声明用于整体的赋值
//row["name"] = 666 // 错误的
row = data
fmt.Println(row) // new创建map, nil
// 这种声明也是用于整体的赋值,但是赋值的是map的指针类型
value := new(map[int]int)
value = &data
fmt.Println(*value)

  // 注意:键不重复、键必须可哈希(int/bool/float/string/array),map是无序的

	v1 := make(map[[2]int]float32)
v1[[2]int{11, 22}] = 3.15
v1[[2]int{33, 44}] = 2.88
fmt.Println(v1)

  

2. map的长度和容量

	// 1. 长度和容量
data := map[string]string{"n1": "武沛齐", "n2": "alex"}
fmt.Println(len(data)) // 2. make创建map并且指定了容量cap
// 根据参数值10,计算出合适的容量
// 一个map中会包含很多的桶,每个桶中可以存放8个键值对
info := make(map[string]string, 10)
info["n1"] = "武沛齐"
info["n2"] = "alex" fmt.Println(len(info))
//fmt.Println(cap(info)) 报错

 

3.  map中value的嵌套用法

	// value中的嵌套
// map的值可以使任意类型
// 值是数组类型
v4 := make(map[string][]int)
v4["n1"] = []int{11, 22, 33, 44, 55}
v4["n2"] = []int{11, 22}
fmt.Println(v4) // 值是map类型
v5 := make(map[string]map[int]int)
v5["n1"] = map[int]int{1: 999, 2: 888}
v5["n2"] = map[int]int{11: 99, 22: 88}
fmt.Println(v5) // 值是数组类型,值得数组中存储的是map类型
v7 := make(map[string][2]map[string]string)
v7["n11"] = [2]map[string]string{{"name": "马亚南"}, {"name": "马馨彤"}}
v7["n12"] = [2]map[string]string{{"age": "18"}, {"age": "28"}}
fmt.Println(v7)

  

4.  map的增删改查

	data := map[string]string{"n1": "武沛齐", "n2": "alex"}
// 增加
data["n3"] = "eric"
// 修改
data["n1"] = "武沛齐2"
// 删除
delete(data, "n2")
// 查看
fmt.Println(data["n1"])
// 循环查看键值对
for key, value := range data {
fmt.Println(key, value)
}
// 循环查看键
for key := range data {
fmt.Println(key)
}
// 循环查看值
for _, value := range data {
fmt.Println(value)
}

  

5.  map中键的嵌套

	// 键不重复 & 键必须可哈希
data1 := make(map[int]int)
data2 := make(map[bool]int)
data3 := make(map[float32]int)
data4 := make(map[string]int)
data5 := make(map[[2]int]int)
//data6 := make(map[[]int]int) // 错误, 不可哈希
//data7 := make(map[map[int]int]int) // 错误, 不可哈希
//data8 := make(map[ [2]map[string]string ]int) // 错误, 虽然键是数组,但是数组里面的值是map,所以不可哈希

  

6.  map中变量赋值

	// 变量赋值,
map1 := map[string]string{"n1": "武沛齐", "n2": "alex"}
map2 := map1 map1["n1"] = "哈哈"
fmt.Println(map1)
fmt.Println(map2)
特别提醒:map中无论是否存在扩容,都指向同一个地址

最新文章

  1. maven中央仓库访问速度太慢的解决办法
  2. java学习第12天
  3. CentOS7上让Jexus开机自启动
  4. 【poj3122】 Pie
  5. 【iCore3 双核心板_FPGA】例程三:GPIO输入实验——识别按键输入
  6. 比较全面的MySQL优化参考(上下篇)
  7. Java 参数的一些心得
  8. Win8下修改任務欄的資源管理器默認打開位置
  9. macos ssh host配置及免密登陆
  10. centos安装GO
  11. NaN(Not a Number)问题
  12. MySQL之增删改查
  13. 使用背景图修改radio、checkbox样式
  14. Spark算子--leftOuterJoin和rightOuterJoin
  15. 理解Object.defineProperty的作用
  16. JS,JQ实现模拟暂停FOR循环,间隔几秒后再继续执行
  17. Timeline Style
  18. 启动tomcat出现Removing obsolete files from server... Could not clean server of obsolete ……错误
  19. 问题9:tabtle 整理
  20. LNMP安装目录及配置文件

热门文章

  1. AcWing422. 校门外的树
  2. JAVAWEB项目报"xxx响应头缺失“漏洞处理方案
  3. Spring实现自定义注解并且配置拦截器进行拦截
  4. 安装选择msi格式还是zip(windows下Nodejs zip版下载安装及环境变量配置)
  5. cmake指定程序输出目录和库文件输出目录和拷贝文件
  6. 【LeetCode】979. Distribute Coins in Binary Tree 解题报告(C++)
  7. 【LeetCode】845. Longest Mountain in Array 解题报告(Python)
  8. 【LeetCode】645. Set Mismatch 解题报告(Python)
  9. isEmpty 和 isBlank 的区别
  10. 自动化集成:Docker容器入门简介