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

go语言学习——4

文章目录

  • Map

Map

  • map是一种特殊的数据结构:一种元素对pair的无序集合,pair的一个元素是key,对应一个value,这种结构也称为“关联数组或字典”
  • 引用类型
  • map声明
var map1 map[keytype] valuetype
var map1 map[string] int
  • map可以动态增长
  • key可以是任意用==或!=操作符比较的类型,string、int、float,切片和结构体不能作为key,只包含内建类型的struct可以,指针和接口类型可以
  • value可以是任意类型的
  • 也可以用函数作为自己的值
map1[key1]=val1
v:=map1[key]
len(map1)var mapLit map[string] int
var mapAssigned map[string] intmapLit=map[string] int{"one":1,"two":2}
mapCreated:=make(map[string] float32)
// mapCreated:=map[string] float32
//map是引用类型的,内存用make方法来分配
mapAssigned=mapLit
//mapAssigned是mapLit的引用,修改mapAssigned的修改也会影响到mapLit的值
mf:=map[int] func()int{1:func()int{return 10},2:func()int{return 20},5:func()int{return 50},
}
  • 如果一个key要对应多个值?
    可以将value定义为[]int类型或者其他类型的切片
map1:=make(map[int] []int)
map2:=make(map[int] *[]int)
  • 测试键值对是否存在以及删除元素
  • map1[key1]的方法获取key1对应的值val1,如果不存在,val1是空值,无法区分key1不存在还是它对应的value就是空值,可以用val1,isPresent=map1[key1],isPresent返回一个bool值,如果key1存在map1,val1对应值,isPresent为true,key1不存在,val1是空值,isPresent会返回false

//仅判断某个key是否存在
_,ok:=map1[key1]
//或者
if _,ok:=map1[key1];ok{//...
}
  • 删除key,可以使用delete(map1,key1),key1不存在也不会报错

  • for-range

for key,value:=range map1{...
}
//只获取value
for _,value:=range map1{...
}
//只获取key值
for key:=range map1{...
}
  • map类型切片

必须使用两次make()函数,第一次分配切片,第二次分配切片中的每个map元素

//version A:
items:=make([]map[int] int ,5)
for i:=range items{items[i]=make(map[int]int,1)items[i][1]=2
}
//version B:not good
items2:=make([]map[int],int,5)
for _,item:=range items2{item=make(map[int]int,1)item[1]=2
}
//Version A: Value of items: [map[1:2] map[1:2] map[1:2] map[1:2] map[1:2]]
//Version B: Value of items: [map[] map[] map[] map[] map[]]
  • map的排序

map默认无序
想要对map排序,需要将key或value拷贝到一个切片,再对切片排序

var (barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,"delta": 87, "echo": 56, "foxtrot": 12,"golf": 34, "hotel": 16, "indio": 87,"juliet": 65, "kili": 43, "lima": 98}
)keys := make([]string, len(barVal))
i := 0
for k, _ := range barVal {keys[i] = ki++
}
sort.Strings(keys)

相关文章:

go语言学习——4

文章目录 Map Map map是一种特殊的数据结构:一种元素对pair的无序集合,pair的一个元素是key,对应一个value,这种结构也称为“关联数组或字典”引用类型 map声明 var map1 map[keytype] valuetype var map1 map[string] intmap可以…...

vulnhub-RAVEN:2(MYSQL-UDF提权,手工提权/工具自动提权)

镜像下载:Raven: 2 ~ VulnHub 实验环境:kali:192.168.78.128 vulnhub镜像:192.168.78.133 1、kali查看本地ip地址,以便使用nmap扫描ip段存活主机 2、nmap扫描IP段,发现靶机的IP地址为192.168.78.133 4、访问…...

如何完整地掌握一个机器学习模型

如何完整地掌握一个机器学习模型 要全面地学习、掌握一个机器学习模型,可以遵循以下步骤: 基础理论学习:了解该模型的背后数学原理和推导过程,包括假设、损失函数、优化方法等。 学习算法实现:通过查阅论文、教程或…...

Nevron Open Vision for .NET 2022.3 Crack

Nevron Open Vision for .NET 适用于 Blazor、WPF、WinForms 和 Xamarin.Mac 的领先用户界面组件 Nevron Open Vision for .NET 是一套高级 UI 组件,可帮助您从单个代码库开发功能丰富的 Web (Blazor WebAssembly) 和桌面 (WinFor…...

【Linux】冯诺依曼体系结构以及操作系统的初步认知

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、冯诺依曼体系结构二、操…...

盖雅工场重磅发布「劳动力账户」,助力企业实现全面工时成本管理

2023年5月10日,亚太地区领先的劳动力管理云服务商盖雅工场宣布,在原有的智能排班和实时考勤系统基础之上,正式推出全新模块「劳动力账户」,通过为企业里的每一位员工建立劳动力账户,实现工时与成本的全面管控&#xff…...

数据结构与算法基础(青岛大学-王卓)(2)

第二弹火爆来袭中 这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了龙虾季节了,哎,口水直流了~~) beautiful的分割线 文章目录 第二弹火爆来袭中这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了…...

水产亚硝酸盐偏高解决办法,饮用水亚硝酸盐超标

使用常规的离子交换树脂处理含硫酸盐水中的硝酸盐是困难的。因为树脂几乎交换了水中的所有的硫酸盐后,才与水中的硝酸盐交换。也就是说,硫酸盐的存在会降低树脂对硝酸盐的去除能力。采用Tulsimer A-62MP除硝酸盐树脂优先交换硝酸盐,对硝酸盐的…...

linux 设备树详解

设备树 描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。 树的主干就是系统总线&#x…...

STM32 学习笔记_7 定时器中断:输出比较

输出比较 电机相关比较重要。 OC Output Compare(IC 是输入捕获,CC代指这两个单元),用于输出一定频率和占空比的PWM波形。 右下角四个就是CCR。只有通用计时器和高级计时器有,共用一个cnt计数器,高级计数…...

HTML购物车示例(勾选、删除、添加和结算功能)

以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。 以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID以下…...

MySQL原理(十):主从架构

前言 上一篇介绍了 MySQL 的表分区和分库分表,这一篇将介绍主从架构相关的内容。 主从架构 常见的主从架构模式有四种: 一主多从架构:适用于读大于写的场景,采用多个从库来分担数据库系统的读压力。多主架构:适用于…...

一文了解Moonbeam智能合约

智能合约:区块链交易的基石 20世纪90年代,Nick Szabo首次提出智能合约的概念,这是一个建立在自动化、加密安全世界之上的数字化市场。在这种数字化市场中,交易和业务可以在无需信任的情况下进行,无需中间人。 以太坊…...

【加解密篇】利用HashCat破解RAR压缩包加密文件详细教程

【加解密篇】利用HashCat解密RAR压缩包加密文件 在取证知识里挖呀挖呀挖—【蘇小沐】 文章目录 【加解密篇】利用HashCat解密RAR压缩包加密文件1.实验环境2.RAR加密压缩包 (一)john软件1.使用CMD命令: run\rar2john.exe (二&…...

React面试题汇总1

1.React的严格模式如何使用&#xff0c;有什么用处&#xff1f; React中StrictMode严格模式_react.strictmode_前端精髓的博客-CSDN博客当我们使用 npx create-react-app my-app 创建一个项目的时候。项目中有一段如下所示的代码&#xff1a;ReactDOM.render( <React.Stric…...

Golang每日一练(leetDay0066) 有效电话号码、转置文件

目录 193. 有效电话号码 Valid Phone Numbers &#x1f31f; 194. 转置文件 Transpose File &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 193. 有效电话号…...

前端 之 FormData对象浅谈

一、简介 ​ 通常情况下&#xff0c;前端在使用post请求提交数据的时候&#xff0c;请求都是采用application/json 或 application/x-www-form-urlencoded编码类型&#xff0c;分别是借助JSON字符串来传递参数或者keyvalue格式字符串&#xff08;多参数通过&进行连接&…...

【分布式锁】Redisson分布式锁的使用(推荐使用)

文章目录 前言一、常见分布式锁方案对比二、分布式锁需满足四个条件三、什么是Redisson?官网和官方文档Redisson使用 四、Redisson 分布式重入锁用法Redisson 支持单点模式、主从模式、哨兵模式、集群模式自己先思考下,如果要手写一个分布式锁组件&#xff0c;怎么做&#xff…...

创建XML的三种方式(二)

文章目录 1 使用XmlDocument创建XML文档2 使用XmlTextWriter写XML文档3 使用LINQ to XML 的XDocument类4 小结 本文介绍了在winform中使用C#开发语言来创建XML文档的三种方式&#xff0c;并介绍了各自的优缺点。 方法1是使用 XmlDocument创建XML文档&#xff0c;方法2是使用 …...

十分钟教你搭建类似ChatGPT的安卓应用程序

大家好&#xff0c;我是易安&#xff01; Chat GPT 是当今著名的人工智能工具&#xff0c;就像聊天机器人一样。Chat GPT会回答发送给它的所有查询。今天&#xff0c;我将通过集成 OpenAI API (ChatGPT)构建一个简单的类似 ChatGPT 的 android 应用程序&#xff0c;我们可以在其…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...