1、map的操作:

1-1、创建:make(map[string]int):定义 Map,可以使用内建函数 make 也可以使用 map。
1-2、获取元素:m[key]
1-3、key不存在时,获得Value类型的初始值
1-4、用value,ok:=m[key]来判断是否存在key
1-5、用delete删除一个key

2、map的遍历:

2-1、使用range遍历key,或者遍历key,value对。
2-2、不保证遍历顺序,如需顺序,需手动对key排序。
2-3、使用len获取元素个数。

3、map的key:

3-1、map使用哈希表,必须可以比较相等。
3-2、除了slice,map,function的内建类型都可以作为key。
3-3、Struct类型不包含上述字段,也可作为key。

4、使用总结:

4-1、创建 make(map[string]int)
4-2、取值 value, ok := m[key]
4-3、删除 delete(m, key)

func mapFun()  {m := map[string]string{"name":"lili","course":"golang","site":"imooc","quality":"notbad",}m2 := make(map[string]int)var m3 map[string]intfmt.Println(m,m2,m3)  // map[course:golang name:lili quality:notbad site:imooc] map[] map[]fmt.Println("Traversing map")for i,v := range m {fmt.Println(i,v)   /*site imoocquality notbadname lilicourse golang*/}fmt.Println("Gotting values ____")courseName := m["course"]fmt.Println(courseName)      // golangcauseName, ok := m["coursq"]fmt.Println(causeName,ok)   //  falseif causeName,ok := m["cause"]; ok{fmt.Println(causeName)}else {fmt.Println("key does not exist")  //key does not exist}fmt.Println("Deleting values")name, ok := m["name"]   // 定义name 变量 :=fmt.Println(name,ok)    // lili truedelete(m,"name")name , ok = m["name"]  // 已定义name变量,可直接使用,不需要 :=fmt.Println(name,ok)    //  false}func main() {mapFun()}

5、例:寻找最长不含有重复字符都子串。

/*例:寻找最长不含有重复字符都子串。力扣中文版:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/力扣英文版:https://leetcode.com/problems/longest-substring-without-repeating-characters/description/1、对于每一个字母x:1-1、lastOccurred[x]不存在,或者< start  无需操作1-2、lastOccurred[x] >= start 更新start1-3、更新lastOccurred[x] ,更新maxLength*/func lengthOfNonRepeatingSubStr(s string) int {lastOccurred := make(map[rune]int)start := 0maxLength := 0for i,ch := range []rune(s) {if lastI,ok := lastOccurred[ch]; ok && lastI >= start {start = lastI + 1}if i - start + 1 > maxLength {maxLength = i - start + 1}lastOccurred[ch] = i}return  maxLength}func main() {fmt.Println(lengthOfNonRepeatingSubStr("abcabcabccc")) // 3fmt.Println(lengthOfNonRepeatingSubStr(""))   // 0fmt.Println(lengthOfNonRepeatingSubStr("b"))  // 1fmt.Println(lengthOfNonRepeatingSubStr("月黑见渔灯,孤光一点萤。")) // 12fmt.Println(lengthOfNonRepeatingSubStr("黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花")) // 8}// 测试func sliceMapFun()  {arrStr := []string{"a","b","c","a","b","c","b","而","b","而"}var valStr []stringtempMap := map[string]byte{}for _,e := range arrStr{l := len(tempMap)tempMap[e] = 0if len(tempMap) != l {valStr = append(valStr,e)}}fmt.Println("valStr:",valStr)}func main() {sliceMapFun()   // valStr: [a b c 而]}

03 go语言_Map相关推荐

  1. JAVA学习笔记 03 - JAVA语言程序结构

    本文是Java基础课程的第三课.计算机语言的程序结构无外乎顺序结构.分支结构.循环结构,本文主要介绍Java语言中这些程序结构是如何实现的 文章目录 一.程序结构 二.分支结构 1.单分支if语句 2 ...

  2. 03.Go语言的设计哲学之三: 并发

    本文视频地址 Go 语言原生并发原则 1) Go 语言自身实现层面支持面向多核硬件的并发执行和调度 提到并发执行与调度,我们首先想到的就是操作系统对进程.线程的调度.操作系统调度器会将系统中的多个线程 ...

  3. C语言集锦 | 03 - C语言的复合数据类型(typedef关键字、结构体、枚举体、共用体)

    文档版本 更新时间 更新内容 v1.0 2020-09-14 初稿完成 文章目录 一.typedef关键词 二.结构体(重点) 1. 为什么需要结构体 2. 什么是结构体 3. 如何定义结构体 4. ...

  4. 【嵌入式】C语言高级编程-语句表达式(03)

    00. 目录 文章目录 00. 目录 01. C语言的表达式 02. C语言的语句 03. C语言中的代码块 04. C语言中的语句表达式 05. 宏中使用语句表达式 06. Linux内核应用示例 ...

  5. AI Studio下C语言编程:一道简单的C语言作业题目

    简 介: 本文测试了在 AI Studio中进行C语言编程的过程.使用与 搭建AI Studio 中Python开发环境 同样的 "AIS" python文件,可以在Windows ...

  6. GPM - 多语言实现视频

    晚上有些睡不着,就录制了一个视频,给大家分享一下思路,希望给天天忙乎的同行一个参考.经常会参考我们的弓箭对战枪炮,我们的步枪对坦克飞机大炮.我们不能光勤奋怒工作,我们还需要有强大的武器才可以.光努力蛮 ...

  7. c语言不安全库_为什么和其他语言相比C语言是快速的语言?

    点击上方蓝字关注我哦- 01 前言 初入门的我们经常听见别人说"真正的程序员用C语言编程,C是最快的语言因为它是最靠近及其底层的语言."那么和其他语言相比C语言到底有什么特别的呢? ...

  8. KCL:声明式的云原生配置策略语言

    楔子: 以蚂蚁集团典型的建站场景为例,在接入 Kusion 后,用户侧配置代码减少到 5.5%,用户面对的 4 个平台通过接入统一代码库而消减,在无其他异常的情况下交付时间从 2 天下降到 2 小时- ...

  9. 48岁的C语言,你知道它背后的历史吗?

    C语言作为一个人尽皆知的语言,甚至没有学过编程语言的人也知道它的大名.经历沧桑岁月的它,已经陪伴我们走过了48个年头.回望当年,C语言还在襁褓之中-- 贝尔实验室特别人员奖.美国计算机协会(ACM)的 ...

最新文章

  1. 基于OpenCV的网络实时视频流传输
  2. python注释_不建议使用Java注释的正确方法
  3. VMware上安装 Windows server 2012R2 教程
  4. vmware linux系统 ip,修改虚拟机上Linux系统的IP地址
  5. TensorFlow 2——【module ‘tensorflow.compat.v1‘ has no attribute ‘contrib‘】解决方案
  6. JavaScript实现clearBit清除位算法(附完整源码)
  7. 分享一个简单程序(webApi+castle+Automapper+Ef+angular)
  8. 一句DOS命令搞定文件合并
  9. vim 的寄存器/剪贴板
  10. 漏洞:Client ReDos From Regex Injection
  11. java用map集合实现随机抽奖源码
  12. Github官方app分析——用户身份验证模块
  13. Windows下创建TFTP服务器,uboot访问,下载镜像
  14. 网络术语还在困扰你吗?
  15. 使用Strophe连接xmpp,轻松构建web即时聊天工具
  16. 怎么使用biopython_Biopython - 简介
  17. PDF文件太大,教你一个方法让PDF文件变小
  18. 计量检定与计量校准证书的区别
  19. 用c语言设计红绿灯程序,[转载]51单片机用C语言实现交通灯(红绿灯)源程
  20. day06三级缓存 二次采样

热门文章

  1. 如何批量将png图片转成jpg?
  2. Razor视图引擎、控制器与路由机制学习
  3. LinkedBlockingQueue - 秒懂 - 图解
  4. idea打开java文件中文乱码_idea运行java项目js中文乱码如何解决
  5. 爆一个Symantec Ghost 软件漏洞!
  6. Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(三)
  7. 视频监控系统-电子地图编辑器
  8. Java开发 - 双向链表不可怕
  9. 18_小米监控Open-Falcon:Rabbitmq监控
  10. 奥多比开发者技术日归来