首页 > 其他分享 >Go语言入门5(map哈希表)

Go语言入门5(map哈希表)

时间:2023-04-11 15:38:20浏览次数:39  
标签:robotName map string value key robot01 哈希 Go

Map

​ 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key 都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。

​ 在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别 对应key和value。map中所有的key都有相同的类型,所有的value也有着相同的类型,但是 key和value之间可以是不同的数据类型。

创建map

// 使用make创建map
robotName := make(map[string]string)

// 通过字面值创建map,同时还能初始化一系列键值对
robotName := map[string]string{
    "robot01": "Alice",
    "robot02": "Jack",
    "robot03": "Tom",
}

map的增删改查

// 新增map元素
robotName["robot04"] = "Cindy"
// 访问map中元素
fmt.Println(robotName["robot01"]) // robot01 : Alice
// 查询map中元素个数
fmt.Println(len(robotName)) // 4
// 删除map中元素
delete(robotName, "robot03")
// 判断是否有这个元素,ok是bool类型,如果有返回true,反之返回false
name, ok := robotName["robot0"]
fmt.Println(name) // Alice
fmt.Println(ok) // true

map的遍历

​ 要想遍历map中全部的key/value对的话,可以使用range风格的for循环实现,和之前的slice遍 历语法类似。但是,Map的迭代顺序是不确定的,并且不同的哈希函数实现可能导致不同的遍历顺序。

// 通过range循环遍历map
for index, value := range robotName {
    fmt.Println(index + " : " + value)
}
/*
robot01 : Alice
robot02 : Jack
robot04 : Cindy
*/

嵌套map

​ Map的value类型也可以是一个聚合类型,比如是一个map或slice,

// 声明嵌套map
robotInfo := map[string]map[string]string{}
// 因为上面的声明语句只分配了外层空间,所以需要通过make分配内层空间
// 写法1
robotInfo["robot01"] = make(map[string]string)
robotInfo["robot01"]["name"] = "Alice"
robotInfo["robot01"]["age"] = "18"
// 写法2
robotInfo["robot02"] = map[string]string{
    "name": "Bob",
    "age":  "20",
}
// 遍历嵌套map
for index1, value1 := range robotInfo {
    for index2, value2 := range value1 {
        fmt.Println(index1 + " : " + index2 + " : " + value2)
    }
}

标签:robotName,map,string,value,key,robot01,哈希,Go
From: https://www.cnblogs.com/te9uila/p/17306377.html

相关文章

  • go 总汇
    命令作用gomodinit 生成go.mod文件gomoddownload 下载go.mod文件中指明的所有依赖gomodtidy 整理现有的依赖gomodgrap 查看现有的依赖结构gomodedit 编辑go.mod文件gomodvendo 导出项目所有的依赖到vendor目录gomodverify 校验一个模块是否被篡改过gomodwh......
  • 【go】文件
    file与base64互转packagemainimport( "encoding/base64" "fmt" "io/ioutil")funcmain(){ //file转base64 fileBytes,err:=ioutil.ReadFile("E:\\测试\\test.png")//读取file iferr!=nil{ panic(err) } ......
  • Android Kotlin mapTo
     在Kotlin中,mapTo是一种用于将集合中的元素转换成另一个集合的函数。它可以将一个集合的元素映射到另一个集合,并将结果添加到目标集合中。mapTo的语法如下:fun<T,R,C:MutableCollection<inR>>Iterable<T>.mapTo(destination:C,transform:(T)->R):C其中:T是源集......
  • Studio 3T 2023.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,现在
    TheprofessionalGUI,IDEandclientforMongoDB请访问原文链接:https://sysin.org/blog/studio-3t-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgStudio3T,MongoDB的专业GUI、IDE和客户端适用于MongoDB的所有IDE、客户端和GUI工具——在Atlas......
  • go语言学习-gin框架路由
    表单参数表单参数传输为post请求,http常见的传输格式为四种application/jsonapplication/x-www-form-urlencodedapplication/xmlmultipart/form-data表单参数可以通过PostForm()方法获取,该方法默认解析的是x-www-form-urlencoded或from-data格式的参数<!DOCTYPEhtml><htmllang="e......
  • .NET Core MongoDB数据仓储和工作单元模式实操
    前言MongoDB从入门到实战的相关教程YyFlight.ToDoList项目源码地址MongoDB事务使用前提说明创建EntityBase公共类添加UserInfo用户表实体映射模型创建用户Repository创建用户管理业务代码UserOperationExample控制创建注册数据库基础操作和工作单元注册相关应用服务......
  • Django 同一Model注册多个modelAdmin
    需求:同一个djangomodel模型,根据不同需求展示注册到admin.py中classUserMsg(models.Model):username=models.CharField(max_length=20,null=False,verbose_name='发送方')hername=models.CharField(max_length=20,null=True,verbose_name='对方姓名')ti......
  • mmap模块介绍
    内存映射模块了解计算机内存内存映射是一种使用较低级别的操作系统API将文件直接加载到计算机内存中的技术。它可以显著提高程序中的文件I/O性能。术语内存是指随机存取内存或RAM.计算机内存类型:物理的虚拟的共享的使用内存映射时每种类型的内存都会发挥作用,因此让我......
  • Go笔记(二):条件控制语句
    Go语言中的if语句根据条件表达式的结果选择需要执行的业务流程。1、if控制语句1、if语法语法详情如下:if条件表达式{//条件表达式为true,执行的代码块}条件表达式必须返回布尔型的结果,与Java语法不同,在Go中,if的条件表达式不使用括号。2、if/else语法......
  • golang中的错误处理
    0.1、索引https://waterflow.link/articles/16667167272361、panic当我们执行panic的时候会结束下面的流程:packagemainimport"fmt"funcmain(){ fmt.Println("hello") panic("stop") fmt.Println("world")}gorun9.gohellopanic:s......