记一次坑爹的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
版权声明:本文为博主原创文章,转载请附上博文链接!
记一次坑爹的golang 二维map判断问题的更多相关文章
- Codeforces 519D A and B and Interesting Substrings(二维map+前缀和)
题目链接:http://codeforces.com/problemset/problem/519/D 题目大意:给你一串字符串s仅由小写字母组成,并且对于'a'~'z'都给了一个值.求子串t满足t的 ...
- HDU 1263 二维map
题意:给出一份水果的交易表,根据地区统计出水果的交易情况. 思路:二维map使用. #include<cstdio> #include<string> #include ...
- ACM-ICPC2018徐州网络赛 Features Track(二维map+01滚动)
Features Track 31.32% 1000ms 262144K Morgana is learning computer vision, and he likes cats, too. ...
- Golang 二维切片初始化
package main import "fmt" func main() { // 方法0 row, column := 3, 4 var answer [][]int for ...
- golang 二维切片
初始化: res := make([][length]int, length), 例如: res := make([][2]int, 10) fmt.Println(res) 输出: [[0 0] [ ...
- golang二维码
package main import ( "github.com/boombuler/barcode" "github.com/boombuler/barcode/qr ...
- 扫描二维码判断移动设备(Android/ios),以及判断是否微信端扫描
<section class="download"> <a href="apk地址" class="android" st ...
- hdu 1263 水果 【二维map】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263 题目大意: Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ ...
- Golang 中使用多维 map
http://tnt.wicast.tk/2015/11/02/golang-multiple-dimension-map/ Golang 的 XML/JSON 解析库乍看使用起来很方便,只要构造一样 ...
随机推荐
- shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
resource_dir=/tmp/jobs20170711/jobs/*/config.xmltarget_dir=/tmp/jobs20170711/bakefilelist=`ls $resou ...
- Linux服务器开发初步
服务器开发需要考虑的内容很多,比如服务器的架构.稳定性.性能以及负载能力等等. 事实上,在开发服务器的过程中,需要综合考虑各种因素,比如就客户端连接时间较短却又比较频繁的服务器(例如HTTP服务器 ...
- HDU 1260 Tickets (动规)
Tickets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- WIN2008中部署网站后样式及JS加载不了
今天在一台刚刚装好的WIN2008上部署一个问题,一切按流程来:① 控制面板加IIS,把.NET 3.5打勾② 装.NET 4.0框架③ 装MSSQL2012④ IIS中部署网站⑤ 修改web.con ...
- Spring Hello World
1. 概述 Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布. 1.1 依赖注入 1.2 ...
- Angular External js library calling Document.Ready
https://stackoverflow.com/questions/51094841/angular-external-js-library-calling-document-ready Step ...
- C/C++中获取数组的长度
C/C++中没有提供直接获取数组长度的函数.对于存放字符串的字符数组,可用strlen函数获取长度. 如:char a[]="hello world";int count = st ...
- Mac OSX系统、Linux、Windows命令行教程
目录 Mac OSX系统.Linux.Windows命令行教程 一.各系统终端的使用方法 二.各系统命令的功能 Mac OSX系统.Linux.Windows命令行教程 用你的终端做一些事情 (com ...
- 使用apache服务器配置虚拟目录
安装好了apache+php+mysql之后就像在自己电脑上安装wordpress玩玩,因为安装好之后根目录在D盘, 所以就想自己配置一个虚拟目录指向路径为D:\wordpress的wordpress ...
- BAT-使用BAT方法清理Delphi临时文件
@echo offdel /S *.~*del /S *.dcudel /S *.dskdel /S *.hppdel /S *.ddpdel /S *.mpsdel /S *.mptdel /S * ...