Go map的概念及三种使用方法

map的概念

  • map 的基本介绍
    • map key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合,
  • 基本语法
    • var map 变量名  map[keytype]valuetype
  • key 可以是什么类型
    • golang 中的 map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只包含前面几个类型的 接口, 结构体, 数组
    • 通常 key 为 int 、string
    • 注意:
      • slice, map 还有 function 不可以,因为这几个没法用 == 来判断
  • valuetype 可以是什么类型
    • valuetype 的类型和 key 基本一样
    • 通常为: 数字(整数,浮点数),string,,map,struct

  • map 声明的举例:
    • var a map[string]string
    • var a map[string]int
    • var a map[int]string
    • var a map[string]map[string]string
  • 注意声明是不会分配内存的,初始化需要 make ,分配内存后才能赋值和使用

  • 案例演示:
//map的声明和注意事项 
var a map[string]string
//在使用map前,需要先make , make的作用就是给map分配数据空间
a = make(map[string]string, 10)
a["no1"] = "宋江" //ok?
a["no2"] = "吴用" //ok?
a["no1"] = "武松" //ok?
a["no3"] = "吴用" //ok?
fmt.Println(a)
  • 输出结果:

  • 对上面代码的说明
    • map 在使用前一定要 make
    • map 的 key 是不能重复如果重复了,则以最后这个 key-value 为准
    • map 的 value 是可以相同的. 
    • map 的 key-value 是无序
    • make 内置函数数目


map的三种使用方法

  • 方式 1
--map的声明
var a map[string]string
-- 在使用map前,需要先make , make的作用就是给map分配数据空间
a = make(map[string]string, 10)
  • 方式 2
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
  • 输出:

  • 方式 3
heroes := map[string]string{
	"hero1" : "小卤蛋",
	"hero2" : "瑶瑶公主",
	"hero3" : "吉吉国王",
}
heroes["hero4"] = "高地虎"
fmt.Println("heroes=", heroes)
  • 输出:


应用案例:

  • 比如:我们要存放 3 个学生信息, 每个学生有 name sex 信息
studentMap := make(map[string]map[string]string)

studentMap["stu01"] =  make(map[string]string, 3)
studentMap["stu01"]["name"] = "tom"
studentMap["stu01"]["sex"] = "男"
studentMap["stu01"]["address"] = "北京长安街"

studentMap["stu02"] =  make(map[string]string, 3) //这句话不能少!!
studentMap["stu02"]["name"] = "mary"
studentMap["stu02"]["sex"] = "女"
studentMap["stu02"]["address"] = "上海黄浦江"

fmt.Println(studentMap)
fmt.Println(studentMap["stu02"])
  • 输出:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lua语言中协程的使用情况: Lua语言的协程可以通过 coroutine 模块的 coroutine.create() 函数来创建。在Lua中,协程是一种轻量级线程,可以用于相互协作的任务。协程通过yield函数可以让出CPU时间,使得其他协程可以继续执行。Lua语言中协程的应用场景比较广泛,主要体现在以下方面: 1. 网络平台:通常用于处理大量的客户端连接。将每个客户端连接封装为一个协程,并采用事件循环的方式,让协程间相互协作,营造出一种类似于多线程的效果。 2. Web开发:在Web开发中,多个请求可以封装成协程,使用协程可以更好地实现异步I/O操作,提升程序性能。 3. 游戏开发:常常使用协程来实现游戏中的异步I/O操作,比如异步加载资源等。 Java语言中线程的使用情况: Java语言中线程是一个非常重要的概念,它在JVM层面提供了对多线程的支持。线程在Java中可以通过Thread类创建。Java在实现线程时,采用多线程并发的思想,以提高程序的执行效率和并发性。Java中线程的使用场景主要有下面几个方面: 1. 面向图形用户界面(GUI)编程:在GUI编程中,Java中的UI线程通常被用来响应用户的交互请求,这样可以提高应用的响应速度。 2. Web开发:针对Web开发,Java的线程可以通过线程池来提供多线程并发支持。同时,可以使用Java的多线程技术实现请求的异步处理。 3. 大数据处理:在大数据处理中,Java多线程技术通常被用于分布式计算和并行化处理,以提高计算效率。 golang语言中协程的使用情况: go语言采用轻量级的协程并发模型,称为Goroutine模型。在Goroutine模型中,每个协程都只需极少的内存,并且调度器可以自动地对协程进行管理,从而大大降低了协程的使用成本。golang语言中协程的应用场景主要体现在以下方面: 1. 网络编程:在网络编程中,采用协程可以避免用户态和内核态的切换,这样能够提高程序的性能和执行效率。 2. 高并发处理:在高并发场景下,协程能够以非常低的成本实现并发操作,从而提高程序的并发性和执行速度。 3. 分布式处理:协程的轻量级特性可以使得其在分布式处理中得到广泛应用,例如golang中的map-reduce处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值