首页 > 其他分享 >9、go的map

9、go的map

时间:2022-11-25 16:13:23浏览次数:44  
标签:map string fmt 张三 Println 王五 go

map引入

func main() {
	// 定义map
	var a map[int]string
	// 只声明map内存是没有分配空间的,必须通过make函数进行初始化
	a = make(map[int]string, 10) // 如果不指定大小,map会默认分配大小的
	a[1] = "张三"
	a[2] = "李四"
	a[3] = "王五"
	a[4] = "赵六"
	a[5] = "张三"
	a[2] = "王彪" // 会替换key为2的值,2-王彪

	fmt.Println(a) // map[1:张三 2:王彪 3:王五 4:赵六 5:张三]
}

map其他的创建方式

func main() {
	b := make(map[int]string)
	b[1] = "张三"
	b[2] = "李四"
	fmt.Println(b) // map[1:张三 2:李四]

	c := map[int]string{
		1: "张三",
		2: "李四",
	}
	c[3] = "王五"
	fmt.Println(c) // map[1:张三 2:李四 3:王五]
}

map操作

func main() {
	b := make(map[int]string)
	// 增加
	b[1] = "张三"
	b[2] = "李四"
	fmt.Println(b) // map[1:张三 2:李四]
	// 修改
	b[2] = "王五"
	fmt.Println(b) // map[1:张三 2:王五]

	// 删除,使用delete函数
	delete(b, 2)
	fmt.Println(b) // map[1:张三]
	// 删除不存在的key,也不会报错
	delete(b, 3)
	fmt.Println(b) // map[1:张三]

	// 查找,返回值,是否存在
	value, flag := b[1]
	fmt.Println(value) // 张三
	fmt.Println(flag)  // true

	value2, flag2 := b[3]
	fmt.Println(value2) // 空字符
	fmt.Println(flag2)  // false

	// 遍历map
	for k, v := range b {
		fmt.Printf("key:%v value:%v \n", k, v)
	}
	// 打印:
	// key:1 value:张三

	// 增加点难度
	a := make(map[string]map[int]string)
	// 给这个map赋值
	a["班级1"] = make(map[int]string, 3)
	a["班级1"][1] = "张三"
	a["班级1"][2] = "李四"
	a["班级1"][3] = "王五"

	a["班级2"] = make(map[int]string, 3)
	a["班级2"][11] = "赵六"
	a["班级2"][22] = "王彪"
	a["班级2"][33] = "汪汪"

	for k1, v1 := range a {
		fmt.Println(k1)
		for k2, v2 := range v1 {
			fmt.Printf("学生学号:%v, 学生姓名:%v \n", k2, v2)
		}
		fmt.Println()
	}
	// 打印:
	//班级2
	//学生学号:11, 学生姓名:赵六
	//学生学号:22, 学生姓名:王彪
	//学生学号:33, 学生姓名:汪汪
	//班级1
	//学生学号:1, 学生姓名:张三
	//学生学号:2, 学生姓名:李四
	//学生学号:3, 学生姓名:王五
}

标签:map,string,fmt,张三,Println,王五,go
From: https://www.cnblogs.com/abiu/p/16382370.html

相关文章

  • Stream流Collectors.toMap用法
    packagecom.best.buc.verification.constant;importlombok.AllArgsConstructor;importlombok.Getter;importlombok.Setter;importjava.util.ArrayList;impo......
  • Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
    摘要:一、问题:      数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求。 二、解决方案:   1.通过高速服务器Cache......
  • MongoDB - 事务支持
    事务简介事务是数据库中处理的逻辑单元,每个事务中包括一个或多个数据库操作,既可以是读操作,也可以是写操作。ACID是一个“真正”事务所需要具备的一组属性集合,指的是原子......
  • centos 7 YUM 安装mongodb 3.4
    第一步查看是否存在Mongodb配置yum源切换到yum目录cd/etc/yum.repos.d/查看文件ls第二部不存在添加yum源创建文件touchmongodb-3.4.repo编辑该文件vimongodb-3.4.......
  • Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
    错误Causedby:org.apache.ibatis.builder.BuilderException:ErrorparsingMapperXML.Cause:org.apache.ibatis.builder.BuilderException:Parsingerrorwasfou......
  • Go 语言系列20:defer 延迟调用
    含有​​defer​​​语句的函数,会在该函数将要返回之前,调用另一个函数。简单点说就是​​defer​​语句后面跟着的函数会延迟到当前函数执行完后再执行。下面是一个简单......
  • Go 语言系列23:接口
    在Go语言中,接口就是方法签名(MethodSignature)的集合。在面向对象的领域里,接口定义一个对象的行为,接口只指定了对象应该做什么,至于如何实现这个行为,则由对象本身去确定......
  • Go 语言系列22:方法
    方法其实在之前结构体那边简单讲过,方法其实就是一个函数,在​​func​​这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型......
  • Go 语言系列24:go 协程
    Go协程是与其他函数或方法一起并发运行的函数或方法。Go协程可以看作是轻量级线程。与线程相比,创建一个Go协程的成本很小。因此在Go应用中,常常会看到有数以千计的Go......
  • Go 语言系列21:goto 无条件跳转
    在Go语言中保留​​goto​​​这点我确实没想到,毕竟很多人不建议使用​​goto​​​语句。​​goto​​后面接的是标签,表示下一步要执行哪里的代码。gotolabel...la......