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

go二维map_记一次坑爹的golang 二维map判断问题

现象

var PeopleLimit =make(map[string]map[string]int64)

func foo(arr1,arr2 string){

if x,ok := PeopleLimit[arr1][arr2];ok{

fmt.Println(" ok")

fmt.Println(x)

}else{

PeopleLimit[arr1] = make(map[string]int64)

fmt.Println(" not ok")

}

//添加新元素

PeopleLimit[arr1][arr2] = time.Now().Unix()

}

func main() {

foo("a","b")

foo("c","d")

foo("a","f")

fmt.Println(PeopleLimit)

return

}

按理应该要输出三个元素,但第一个被覆盖了,定位了很久才发现是二维map的判断问题:

执行foo("a","f")时

if x,ok := PeopleLimit[arr1][arr2];判断是二级key也不存在,但在执行第三次foo("a","f")时,map[a][b]是存在,但map[a][f]不存在,于是,进入else后重新make将map[a]清空了!!

修改后:

var PeopleLimit =make(map[string]map[string]int64)

func foo(arr1,arr2 string){

if x,ok := PeopleLimit[arr1];ok{

//修改点

if y,ok := x[arr2];ok{

fmt.Println(" ok")

fmt.Println(x,y)

}

}else{

PeopleLimit[arr1] = make(map[string]int64)

fmt.Println(" not ok")

}

//添加新元素

PeopleLimit[arr1][arr2] = time.Now().Unix()

}

func main() {

foo("a","b")

foo("c","d")

foo("a","f")

fmt.Println(PeopleLimit)

return

}

---------------------

作者:yinnnnnnn

来源:CSDN

原文:https://blog.csdn.net/qq_35440678/article/details/83154780

版权声明:本文为博主原创文章,转载请附上博文链接!

http://www.lryc.cn/news/2416578.html

相关文章:

  • Android Studio 代码混淆(你真的会混淆吗)
  • JSP基于web仓库管理系统v83k3(程序+源码+数据库+调试部署+开发环境)
  • RISC架构
  • 多线程编程java_java多线程编程
  • 递归调用栈溢出问题分析与解决
  • C#的Winform多语言实现(resx文件)
  • 电脑时间老是重置?一招教你轻松解决!
  • 黑色主题个人主页HTML源码
  • 印度电影推荐
  • 教您如何使用WebMatrix创建第一个网页
  • 网络安全笔记-信息安全工程师与网络安全工程师考试大纲(附:Web安全大纲)
  • Windows xp正版验证序列号大全
  • 如何利用CSDN资源来建立技术社区 - 博客篇
  • Farpoint使用一点小总结
  • NSTimer介绍
  • 【C语言深度剖析】深入理解C语言中的移位操作符(代码+图解)
  • 群体智能优化算法之人工鱼群优化算法(Artificial Fish Swarm Algorithm,AFSA)
  • 视频下载网址
  • 为用户“NT AUTHORITY/NETWORK SERVICE”授予的权限不足,无法执行此操作。 (rsAccessDenied)
  • OMG Data Distribution Service(DDS)规范解读-Part2
  • 2020最新Spring框架教程【IDEA版】-Spring框架从入门到精通
  • TC流量控制
  • 2023最新PHP短网址短链接生成源码
  • NOIP2022 喵了个喵
  • Android AOSP LatinIME输入法自定义图片按钮
  • ExitProcess,TerminateProcess,CreateToolhelp32Snapshot,Process32First,Process32Next,OpenProcess
  • windows进程 windows多进程编程
  • JavaScript之表单验证
  • 从零开始了解《间之楔动漫》:带你领略这部作品的独特魅力!
  • 光盘加密大师轻松为光盘加密