Go map类型

一、map介绍

1、map说明
  • map是一种无须的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用
  • Go语言中map的定义语法如下:map[KeyType]ValueType
  • 其中
    • KeyType:表示键的类型
    • ValueType:表示键对应的值的类型
    • map类型的变量默认初始值为nil,需要使用make()函数来分配内存
  • 其中cap表示map的容量,该参数虽然不是必须的
  • 注意:获取map的容量不能使用cap,cap返回的是数组切片分配的空间大小,根本不能用于map
  • 要获取map的容量,可以用len函数

2、定义map

1、map定义:方法1
package mainimport "fmt"func main() {scoreMap := make(map[string]int,8)scoreMap["snail"]=100scoreMap["pupu"]=90fmt.PrintIn(scoreMap)    //map[snail:100 pupu:90]fmt.PrintIn(scoreMap["snail"])    //100fmt.Printf("type of a:%T\n",scoreMap)    //type of a:map[string]int
}
2、map定义:方法2
package main
import ("fmt"
)
func main() {userInfo := map[string]string{"username": "IT Snail","password": "123456",}fmt.Println(userInfo)   // map[password:123456 username:IT Snail]
}
3、map 嵌套 map
package mainimport "fmt"func main() {var mapSlice = make([]map[string]string,3)for index, value := range mapSlice {fmt.Printf("index:%d value:%v\n",index,value)}fmt.PrintIn("################### after init ################")mapSlice[0] = make(map[string]string,10)mapSlice[0]["name"] = "Snail"mapSlice[0]["password"] = "123456"mapSlice[0]["address"] = "浦东新区"for index, value := range mapSlice {fmt.Printf("index:%d,value:%v\n",index,value)}
}
/*
index:0 value:map[]
index:1 value:map[]
index:2 value:map[]
#################### after init ################
index:0 value:map[address:海淀区 name:小王子 password:123456]
index:1 value:map[]
index:2 value:map[]*/

三、map 基本使用

1、判断某个建是否存在
package main import "fmt"func main() {userInfo := map[string]string{"username":"Snail","password":"123456",}v,ok := userInfo["username"]if ok {fmt.PrintIn(v)    //Snail}else {fmt.PrintIn("map中没有此元素")}
}
2、delete()函数
  • 使用的delete()内建函数从 map 中删除一组键值对,delete()函数的格式如下:delete(map对象 key)
  • 其中
    • map 对象:表示要删除键值对的 map 对象
    • key:表示要删除的键值对的键
package mainimport "fmt"func main() {scoreMap :=make(map[string]int)ScoreMap["pupu"]=90ScoreMap["Snail"]=100scoreMap["白河车"]= 70delete(scoreMap,"Snail")    //将 Snail:100 从 map 中删除for k,v := range ScoreMap{fmt.PrintIn(k,v)}
}
/*
pupu 90
白河车 70
*/

四、map 遍历

1、遍历 key 和 value
package mainimport "fmt"func main() {scoreMap :=make(map[string]int)ScoreMap["pupu"]=90ScoreMap["Snail"]=100scoreMap["白河车"]= 70for k,v := range ScoreMap{fmt.PrintIn(k,v)}
}
/*
pupu 90
Snail 100
白河车 70
*/
2、只遍历 key
  • 注意:遍历 map 时的元素顺序余添加键值对的顺序无关
package mainimport "fmt"func main() {scoreMap :=make(map[string]int)ScoreMap["pupu"]=90ScoreMap["Snail"]=100scoreMap["白河车"]= 70for k,v := range ScoreMap{fmt.PrintIn(k)}
}
/*
pupu 
Snail 
白河车 
*/
3、顺序遍历 map
package main
import ("fmt""sort"
)
func main() {// 第一:生成字典,scoreMapvar scoreMap = make(map[string]int, 200)for i := 0; i < 10; i++ {key := fmt.Sprintf("stu%02d", i) //生成 stu 开头的字符串scoreMap[key] = i}// 第二:取出 map 中的所有 key 存入切片 keysvar keys = make([]string, 0, 200)for key := range scoreMap {keys = append(keys, key)}// 第三:对切片进行排序sort.Strings(keys)// 第四:按照排序后的 key 遍历 mapfor _, key := range keys {fmt.Println(key, scoreMap[key])}
}
/*
stu00 0
stu01 1
stu02 2
stu03 3
stu04 4
stu05 5
stu06 6
stu07 7
stu08 8
stu09 9*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAN网络出现错误帧从哪些方面去分析解决

标题&#xff1a;CAN网络出现错误帧从哪些方面去分析 实例1&#xff1a; 断电重启后&#xff0c;会有错误帧产生。 检查方案&#xff1a; 查看收发模块的初始化、使能是否在发送CAN报文之前完成&#xff1f; 实例2&#xff1a; 周期性报文&#xff0c;有时会冒出一帧错误帧&…

[Java][单列集合具体操作]以ArrayList为例讲解“增”“删”“查”“改”操作

我们来研究List系列的集合 List相较于set 优势在于&#xff1a; 1.有序的 2.有索引的 3.可重复的 这里最关键的是2.有索引的&#xff1a;因为这点我们可以做更多拓展性的操作 List是Collection中的一种 Collection中的方法List都继承了 索引拓展出的方法 是add(索引位置&#x…

【接口自动化】selenium库也有大用场(获取cookie)

相信有些童鞋在做接口、或者说接口自动化测试的过程中会遇到这样的场景&#xff1a;测试的接口&#xff0c;必须是需要登录后才能发起请求成功的。 那么怎么解决呢&#xff1f; 本着团队协作的精神&#xff0c;我们就去让开发同学开个后门&#xff0c;给你个“万能”值&#x…

基层管理人员的薪酬结构设计及分析

人力资源经理们经常面对这样的难题&#xff1a;怎么用相同的工资水平更好的保留和发展基层管理人员&#xff1f;要解决这个难题&#xff0c;第一要明确企业的付薪理念&#xff0c;选择相应的基层管理人员薪酬结构类型&#xff1b;第二要确定合理的针对基层管理人员的薪酬结构比…

Condition 源码解析

Condition 源码解析 文章目录 Condition 源码解析一、Condition二、Condition 源码解读2.1. lock.newCondition() 获取 Condition 对象2.2. condition.await() 阻塞过程2.3. condition.signal() 唤醒过程2.4. condition.await() 被唤醒后 三、总结 一、Condition 在并发情况下…

【网络奇遇之旅】:那年我与计算机网络的初相遇

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 计算机网络 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 一. 前言二. 计算机网络的定义三. 计算机网络的功能3.1 资源共享3.2 通信功能3.3 其他功能 四. 计算机网络…

pta找鞍点—C语言

7-13 找鞍点 分数 300 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。 本题要求编写程序&#xff0c;求一个给定的n阶方阵的鞍点。 输入格式&#xff1a; 输入第一行给出一个正整数n&#xff08;1…

基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人履带车坦克-2(以乐迪crossflight飞控为例)

这里重点以乐迪crossflight飞控为例进行组装调试。 1.刷写固件 安装最新版的乐迪地面站&#xff0c;在官网可以下载。由于产品里面不好找到对应的飞控&#xff0c;可以在首页滑动图片里进入。 1.连接飞控和电脑&#xff0c;查看com口&#xff0c;安装驱动。 2.刷写固件。如果…

第十一章 python基础之api

Python基础、函数、模块、面向对象、网络和并发编程、数据库和缓存、 前端、django、Flask、tornado、api、git、爬虫、算法和数据结构、Linux、设计题、客观题、其他 第十一章 api 1. 什么是webservice&#xff1f; Web服务&#xff08;Web Services&#xff09;是一种通过网…

Web实现悬浮球-可点击拖拽禁止区域

这次要实现的是这种效果&#xff0c;能够在页面上推拽和点击的&#xff0c;拖拽的话&#xff0c;就跟随鼠标移动&#xff0c;点击的话&#xff0c;就触发新的行为&#xff0c;当然也有指定某些区域不能拖拽&#xff0c;接下来就一起来看看有什么难点吧~ 需要监听的鼠标事件 既…

理解DALL-E 2

1.简介 DALL-E 2的效果想必大家都已经很清楚了&#xff0c;效果是非常惊人的&#xff0c;该篇文章就是讲一下DALL-E 2的原理是什么。 2.方法 DALL-E 2的原理不难理解&#xff0c;前提是你知道CLIP。简单来说&#xff0c;CLIP是一个由文本和图片多模态训练的一个zero-shot模型…

【SpringBoot3+Vue3】六【完】【番外篇】- (0-1临摹)

目录 一、后端 1、服务器管理 1.1 ProjectController 1.2 ProjectService 1.3 ProjectServiceImpl 1.4 ProjectMapper 1.5 实体类 2、项目管理 2.1 ServerManageController 2.2 ServerManageService 2.3 ServerManageServiceImpl 2.4 ServerManageMapper 2.5 Serv…

Nacos服务间的通信方式并使用

RestTemplate方式通信 使用新创建的RestTemplate方式处理 Autowired private LoadBalancerClient loadBalancerClient;使用&#xff1a; //调用某应用名称/demo接口&#xff0c;返回值是String类型 ServiceInstance serviceInstance loadBalancerClient.choose("应用名…

bean是一个由 Spring IoC(控制反转)容器管理的对象

bean是什么&#xff1f; Bean 是一个由 Spring IoC&#xff08;控制反转&#xff09;容器管理的对象。Spring Boot 使用注解来定义和配置 Bean&#xff0c;这些注解包括 Component、Service、Repository、Controller 等。 当 Spring Boot 启动时&#xff0c;它会扫描项目中的类…

进入docker容器

学习如何进入一个正在运行的容器的内部&#xff0c;要求学习者参照示例&#xff0c;进入一个名为container2的容器内部&#xff0c;并在容器内部创建一个1.txt文件。 相关知识 使容器在后台运行 因为本关要使用docker run -d命令&#xff0c;所以在本关的开始&#xff0c;将…

IDEA专栏—重装IDEA的配置

文章目录 1、maven路径2、默认文件路径3、插件4、导包顺序5、快捷键6、调整配置插件 1、maven路径 2、默认文件路径 3、插件 4、导包顺序 import static all other imports <blank line> import java.* import javax.* <blank line> import all other imports <…

python实现获取aws route53域名信息

最近由于工作原因接触到aws的服务&#xff0c;我需要实时获取所有的域名信息&#xff0c;用于对其进行扫描&#xff0c;因此写了一个自动化爬取脚本 给需要的人分享。 1.基础准备 代码环境&#xff1a;python3 第三方库&#xff1a;boto3 &#xff08;安装方法pip install…

虚幻学习笔记7—蓝图接口

一、前言 蓝图接口就是可以在蓝图中实现的接口&#xff0c;有它方便的地方&#xff0c;可以很方便的调用到实现了接口的函数。 二、实现 2.1、创建一个蓝图接口 1&#xff09;可以添加多个函数。 2&#xff09;函数在蓝图接口中只能规定输入和输出参数。 只有输入参数的可以…

SSM校园学习助手系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 校园学习助手系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

C语言--每日选择题--Day30

第一题 1. i 5&#xff0c;j 7&#xff0c;i | j 等于多少&#xff1f; A&#xff1a;1 B&#xff1a;3 C&#xff1a;5 D&#xff1a;7 答案及解析 D &#xff5c;这个是按位或运算符&#xff0c;两个数的二进制位&#xff0c;有1为1&#xff0c;同0为0&#xff1b; i的二进…