当前位置: 首页 > news >正文

go语言基础 -- map的定义与使用

map的定义与使用

  • map声明基础语法
    • map的基本使用
    • map的遍历
    • map切片
    • map排序

map声明基础语法

// map的声明
var xxx_map map[key_type]value_type

map的key可以是基本数据类型,channel,接口,结构体,数组,但不能是slice,map,function,因为他们不能用==判断,声明时不会开辟内存,分配内存需要用到make,make分配内存之后才能使用

xxx_map = make(map[key_type]value_type, size)

make时通过size指定分配可存储的key-value个数,需要注意的是,go里面的map是无序的,但同样的,key也不能重复,重复时保留最后一个存储的数据
除了上面的声明后再make的方式外,还有下面两种方式:

citys := make(map[string]string) // 大小不写的话默认,同时也会自动增长
citys["beijing"] = "bj"
name_map := map[string]string {"name1" : "lzs","name2" : "zp", //这里需要有逗号
}

map类型虽然不能做key,但可以做为value,用法如下:

student_age := make(map[string]map[string]int, 3)
student_age["stu1"] = make(map[string]int, 5) // 别忘了内层map也需要先make再使用

map的基本使用

var citys = make(map[string]string, 3)
citys["city1"] = "beijing"
citys["city2"] = "shanghai"
// delete是内置函数,不用引包,若待删除的key不存在时,删除操作不会被执行
delete(citys, "citys1")
// 查找某个key是否存在,若存在,is_find为true,否则为false
val, is_find := citys["city3"]

如果我们要删除整个map,要么就对map整个遍历,之后再删除,要么就赋值为新map,让原map指向空间被gc回收
map的长度也能用len()来统计

map_len := len(citys)

map的遍历

map只能用for range的方式遍历

for k, v := range citys {// ...
}

map切片

如果切片的数据类型是map,则称作map切片,map切片的好处是可以动态增长,理解起来可以看错c++中的vecrtor存了个map。

// 声明一个map切片
var slice1 []map[string]string
// 使用时需要先给切片分配空间,再给map分配空间
slice1 = make([]map[string]string, 1)
slice1[0] = make(map[string]string)

map排序

由于map是无序的,如果想要对map里面的内容按key排序,需要对key先排序,再按key的顺序取value值

相关文章:

go语言基础 -- map的定义与使用

map的定义与使用 map声明基础语法map的基本使用map的遍历map切片map排序 map声明基础语法 // map的声明 var xxx_map map[key_type]value_typemap的key可以是基本数据类型,channel,接口,结构体,数组,但不能是slice&am…...

讯方·智汇云校第五期名师班火热报名中!

第三期名师班回顾 授课情况 课堂上,同学们热情高涨,积极参与互动。他们紧跟名师的步伐,深入探索云服务的奥秘。张梁老师在为同学们讲述完知识点后,会根据所讲知识给同学们布置对应的实验,由同学们分组讨论练习。 每…...

为什么企业需要使用云电子邮箱?

作为一家机构的负责人,您比大多数人都清楚,您的工作日不会在下午5点就结束。很可能,当您的员工已经打卡下班回家很久之后,您还在以这样或那样的方式继续工作。作为一名企业主,埋头苦干对您来说并不是什么新鲜事&#x…...

[DEBUG] spring boot-如何处理链接中的空格等特殊字符

问题&#xff1a; get或者post中提交的内容可能有空格、#等特殊字符&#xff0c;不做处理的话可能解析错误。 解决&#xff1a; html中&#xff1a; <a th:href"{/listSgrna(id${item.getGeneId()},geneName${item.getGeneName()},genome${genome},sgrnaNum${sgrnaN…...

通过配置数据库事件(Event)来实现定时导出 MySQL 数据库

首先&#xff0c;确保 MySQL 服务器已启用事件调度器功能。你可以通过以下 SQL 语句查询&#xff1a; SHOW VARIABLES LIKE event_scheduler; 如果 event_scheduler 的值为 ON&#xff0c;则表示事件调度器已启用&#xff1b;如果为 OFF&#xff0c;则可以使用以下语句启用&…...

基于x86架构的OpenHarmony应用生态挑战赛等你来战!

为了更快速推进OpenHarmony在PC领域的进一步落地&#xff0c;加快x86架构下基于OpenHarmony的应用生态的繁荣&#xff0c;为北向应用开发者提供一个更加便捷的开发环境&#xff0c;推动OpenHarmony北向应用开发者的增加&#xff0c;助力OpenHarmony在PC领域实现新的突破&#x…...

LeetCode每日一题2673. Make Costs of Paths Equal in a Binary Tree

文章目录 一、题目二、题解 一、题目 You are given an integer n representing the number of nodes in a perfect binary tree consisting of nodes numbered from 1 to n. The root of the tree is node 1 and each node i in the tree has two children where the left ch…...

贝叶斯分类器

贝叶斯分类器 1. 引言 贝叶斯分类器是一种基于贝叶斯定理的分类算法&#xff0c;它利用特征之间的关系和类别的先验概率来进行分类。贝叶斯分类器在文本分类、垃圾邮件过滤、医学诊断等领域有着广泛的应用。 贝叶斯分类算法是统计学的一种分类方法&#xff0c;是一类利用概率…...

游戏服务之会话管理

会话的概念与作用 游戏服务器 Session(会话)是指在游戏服务器和客户端之间建立的一个临时的连接。它可以用于存储和管理用户的游戏状态和信息。 当用户登录游戏时,服务器会为该用户创建一个 Session,可用于记录用户的登录状态、角色信息等个人信息。服务器会为每个会话分…...

LeetCode20 有效的括号

题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。有效字符串需满足&#xff1a;1、左括号必须用相同类型的右括号闭合。 2、左括号必须以正确的顺序闭合。 3、每个右括号都有一个对应的相…...

sql实战_基于某推荐比值问题

将一个月内某PL对应的MBLX出现的最高的频次的占比值最大的值统计出来&#xff0c;并且还要把XHLX&#xff0c;MBLX字段添加上作为最终的推荐字段 Select * from(select *,row_number( ) over (partition by PL order by 占比最大值 desc ) rn from 表) where rn 1&#xff1b…...

协议的概念+本质+作用+最终表现形式,网络问题(技术+应用+解决的协议+存在原因),主机的对称性

目录 协议 概念 示例 -- 摩斯密码 介绍 作用 协议的本质 作用 网络问题 引入 技术问题 应用问题 主机的对称性 问题对应的协议 问题出现的原因 理解协议(代码层面) 举例 -- 快递单 协议的最终表现形式 协议被双方主机认知的基础 协议 概念 协议是在计算机通信…...

iOS中卡顿产生的主要原因及优化思路

卡顿本质上是一个UI体验上的问题&#xff0c;而UI的渲染及显示&#xff0c;主要涉及CPU和GPU两个层面。若 CPUGPU渲染耗时超过16.7ms&#xff0c;就会在屏幕vsync信号到来时无法更新屏幕内容&#xff0c;进而导致卡顿。 iOS中UI渲染主要包含Layout->Draw->Prepare->Co…...

spring boot集成Elasticsearch 7.16.3

环境&#xff1a;Elasticsearch 版本 7.16.3 Elasticsearch for windows下载地址 windows 若依 spring boot版本 2.6.0 pom文件添加 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch<…...

HTML5+CSS3小实例:环绕小球弹性loading动画

实例:环绕小球弹性loading动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge&quo…...

SpringBoot 自定义注解实现操作日志记录

文章目录 前言正文一、项目结构介绍二、核心类2.1 核心注解2.1.1 CLog 日志注解2.1.2 ProcessorBean 处理器bean 2.2 切面类2.3 自定义线程池2.4 工具类2.4.1 管理者工具类 2.5 测试2.5.1 订单创建处理器2.5.2 订单管理者2.5.3 订单控制器2.5.4 测试报文2.5.5 测试结果 附录1、…...

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差&#xff0c;可以参考&#xff0c;ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境&#xff0c;我的话大概就以下内容&#xff0c;后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…...

electron+vue3全家桶+vite项目搭建【27】封装窗口工具类【1】雏形

文章目录 引入思路抽出公共声明文件抽出全局通用数据类型和方法主进程模块1.抽离基础常量2.封装窗口工具类 渲染进程模块测试结果 引入 demo项目地址 可以看到我们之前在主进程中的逻辑全部都塞到index.ts文件中&#xff0c;包括窗口的一些事件处理&#xff0c;handle监听&am…...

从模型到复合AI系统的转变

2023年,大型语言模型(LLM)吸引了所有人的注意力,它可以通过提示来执行通用任务,例如翻译或编码。这自然导致人们将模型作为AI应用开发的主要成分而密切关注,所有人都在想新的LLM将带来什么能力。然而,随着越来越多的开发者开始使用LLM构建,我们认为这种关注正在迅速改变:最先进…...

将仓库A中的部分提交迁移到仓库B中

结论&#xff1a; 使用git format-patchgit am即可实现 使用场景&#xff1a; 例如仓库A这里有5个提交记录&#xff0c;commitid1, commitid2, commitid3, commitid4&#xff0c;commitid5 仓库B想用仓库A中提交的代码&#xff0c;手动改比较慢&#xff0c;当改动较多的时候…...

文墨共鸣应用场景解析:智能客服、内容审核、论文查重等实战案例分享

文墨共鸣应用场景解析&#xff1a;智能客服、内容审核、论文查重等实战案例分享 你是否遇到过这样的困扰&#xff1a;面对海量的用户咨询&#xff0c;客服团队疲于奔命&#xff0c;回答却总是不尽人意&#xff1f;或者&#xff0c;在审核社区内容时&#xff0c;难以快速准确地…...

免费开源PS Vita内容管理终极指南:如何用QCMA轻松管理你的掌机数据

免费开源PS Vita内容管理终极指南&#xff1a;如何用QCMA轻松管理你的掌机数据 【免费下载链接】qcma Cross-platform content manager assistant for the PS Vita 项目地址: https://gitcode.com/gh_mirrors/qc/qcma QCMA&#xff08;Quality Content Manager Assistan…...

STM32F429 HAL库 DMA方式实现SD卡高效存储.csv数据

1. 为什么需要DMA方式存储.csv数据 当你用STM32F429做数据采集时&#xff0c;最头疼的就是CPU被数据传输占满的问题。我去年做工业传感器项目时就遇到过——采集10个通道的模拟量数据&#xff0c;还要实时计算和存储&#xff0c;结果发现光是往SD卡写数据就吃掉了70%的CPU资源。…...

科研人的效率神器:手把手教你定制Zotero笔记模板(含IF/分区显示与AI协作提示)

科研人的效率革命&#xff1a;用ZoteroAI打造智能文献管理系统 在凌晨三点的实验室里&#xff0c;面对堆积如山的文献和即将到来的组会汇报&#xff0c;你是否也曾陷入"读了很多却记不住重点"的困境&#xff1f;传统文献管理方式正在被一场静默的效率革命颠覆——通过…...

联邦滤波器实战:从零搭建一个多传感器融合系统(附Python代码)

联邦滤波器实战&#xff1a;从零搭建一个多传感器融合系统&#xff08;附Python代码&#xff09; 在自动驾驶、机器人导航和工业监测等领域&#xff0c;多传感器数据融合是提升系统可靠性的核心技术。联邦滤波器作为一种分布式滤波架构&#xff0c;能够有效整合来自不同传感器的…...

Windows多机MPI集群搭建避坑全记录:从账户同步到防火墙配置(基于MPICH2)

Windows多机MPI集群实战指南&#xff1a;从零搭建到高效并行计算 实验室里那台孤零零的工作站已经跑满负载&#xff0c;而隔壁几台电脑却亮着屏保无所事事——这个场景是否似曾相识&#xff1f;将闲置的Windows设备组建成MPI计算集群&#xff0c;就像把散兵游勇整编成特种部队&…...

FullCalendar React插件系统深度解析:打造个性化日历

FullCalendar React插件系统深度解析&#xff1a;打造个性化日历 【免费下载链接】fullcalendar-react The official React Component for FullCalendar 项目地址: https://gitcode.com/gh_mirrors/fu/fullcalendar-react FullCalendar React是官方推出的React日历组件&…...

告别Windows?在Deepin/UOS上搭建专业GIS工作流(QGIS 3.18 + 国产OS)

国产操作系统上的GIS革命&#xff1a;QGIS全栈工作流深度实践 当越来越多的企业和机构开始关注技术自主可控&#xff0c;国产操作系统的成熟度正在经历一场静悄悄的革命。作为地理信息领域的从业者&#xff0c;我花了三个月时间将日常工作环境完全迁移到Deepin系统&#xff0c;…...

【C++ 入门精讲4】内存管理、auto、decltype等C++11新特性(附代码)

前言本篇笔记整理本人手写代码及对应知识点&#xff0c;涵盖C内存动态管理&#xff08;new/delete、operator new等&#xff09;、C11新特性&#xff08;auto、decltype、增强for循环、nullptr、using&#xff09;、字符串操作等内容&#xff0c;所有内容均来自代码注释&#x…...

从外卖配送轨迹到共享单车路径:详解uniapp中高德地图Polyline的三种实战用法

从外卖配送轨迹到共享单车路径&#xff1a;详解uniapp中高德地图Polyline的三种实战用法 在移动互联网时代&#xff0c;地图轨迹可视化已成为众多应用的核心功能。无论是外卖小哥的实时配送路线&#xff0c;还是共享单车的骑行轨迹回放&#xff0c;亦或是物流运输的多段路径展…...