直接上例子:

例子1:

package main

import(
"fmt"
) func main(){ a := map[string]string{
"alice":"11",
"bob":"29",
"zhangsan":"29",
"wang":"35",
} tmpRs := map[string][]string{}
for k1, v1 := range a {
tmpRs[v1] = append(tmpRs[v1], k1)
} fmt.Printf("tmpRs.........=%v",tmpRs)
}

根据value,把Value相同的放在一起,结果放在一个大map里.

执行结果如下:

> tmpRs.........=map[11:[alice] 29:[bob zhangsan] 35:[wang]]

例子2:

// json.go
package main import (
"encoding/json"
"fmt"
"strconv"
) type FakeUserInfo struct {
Push_Type string `json:"push_type"` // 渠道
Third_Token string `json:"third_token"` // token
User_id string `json:"user_id"` // 用户ID
} // return: map[int]map[string][]string :{0: {"Users":["2","3","4"],"Tokens":["234","234"]}}
func main() {
var m FakeUserInfo
var tmpRs = map[int]map[string][]string{} str := `{"push_type": "0","user_id": "fake_22222","third_token": "22222"}` json.Unmarshal([]byte(str), &m)
fmt.Println(m)
fmt.Println("pushType......",m.Push_Type)
fmt.Println("thirdToken......",m.Third_Token)
fmt.Println("userId......",m.User_id) if len(m.Push_Type) == 0 {
return
}
i, _ := strconv.Atoi(m.Push_Type) if tmpRs[i] == nil {
tmpRs[i] = map[string][]string{}
}
if tmpRs[i]["Users"] == nil {
tmpRs[i]["Users"] = []string{}
}
if m.Third_Token == "" || m.User_id == "" {
return
}
tmpRs[i]["Users"] = append(tmpRs[i]["Users"], m.User_id)
if tmpRs[i]["Tokens"] == nil {
tmpRs[i]["Tokens"] = []string{}
}
tmpRs[i]["Tokens"] = append(tmpRs[i]["Tokens"], m.Third_Token) fmt.Printf("tmpRs.........=%v",tmpRs)
}

把结果放在一个复合map中.

执行结果如下:

> {0 22222 fake_22222}
> pushType...... 0
> thirdToken...... 22222
> userId...... fake_22222
> tmpRs.........=map[0:map[Users:[fake_22222] Tokens:[22222]]]

golang中遍历汇总的更多相关文章

  1. 【GoLang】golang 最佳实践汇总

    最佳实践 1 包管理 1.1 使用包管理对Golang项目进行管理,如:godep/vendor等工具 1.2 main/init函数使用,init函数参考python 1.2.1 main-> ...

  2. 六、golang中的结构体和方法、接口

    结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...

  3. Golang JSON操作汇总

    直接把结构体编码成json数据 package main import ( "encoding/json" "fmt" _ "os" ) t ...

  4. golang中的RPC开发-2

    RPC简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 如果 ...

  5. golang中的标准库context解读

    简介 golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + se ...

  6. golang中数组指针与指针数组的区别实现

      指针数组和数组的指针,指的是两个不同的东西. 指针数组是有指针组成的数组,数组的指针是一个数组的指针. package main import "fmt" const MAX ...

  7. golang中的反射reflect详解

    先重复一遍反射三定律: 1.反射可以将"接口类型变量"转换为"反射类型对象". 2.反射可以将"反射类型对象"转换为"接口类型变量 ...

  8. Golang中常用的代码优化点

    Golang中常用的代码优化点 大家好,我是轩脉刃. 这篇想和大家聊一聊golang的常用代码写法.在golang中,如果大家不断在一线写代码,一定多多少少会有一些些代码的套路和经验.这些经验是代表你 ...

  9. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

随机推荐

  1. OpenCV安装和测试

    参考链接:http://blog.csdn.net/bruce_zeng/article/details/7961153 OpenCv下载链接:http://sourceforge.net/proje ...

  2. flutter主题颜色

    主题色 右下角的FloatingActionButton的颜色就是默认取值MaterialColor, 默认是蓝色的,如果修改成primarySwatch,就会变成这个颜色值. 一.primarySw ...

  3. paypal支付 NVP支付 paypal 手续费 GetTransactionDetails

    主要内容: 本文章主要讲解的是NVP的对接,以最简单的接口案例,讲解一下对接NVP的方案. 先提供下paypal 官方文档的主要功能对接说明,如下 1.请求API 服务器端点 描述 https://a ...

  4. Delphi 定义线程对象

  5. Linux系统上对其他用户隐藏进程的简单方法

    mount -o remount,rw,hidepid=2 /proc 我使用的是多用户系统,大部分的用户通过ssh客户端访问他们的资源.我如何(怎么样)避免泄露进程信息给他们?如何(怎么样)在Deb ...

  6. mysql 数据库常见的一些基本操作 !详不详细你说了算!

    在日常应用中可能一时想不起来,所以有必要整理一份 指令相关的笔记,以是个人比较满意,也比较全面的一份笔记,希望能帮到你,适用初级小白,大神可略过! MYSQL常用命令: 数据备份与还原·注意:不要打分 ...

  7. git 账号密码

    由于git迁移服务地址,而导致无法登陆 首先  git config --system --unset credential.helper  然后执行 git config --global cred ...

  8. ext系统的超级块

    什么是超级块 如果说inode块是Linux操作系统中文件的核心,那么超级块就是文件系统的心脏.启动Lnux操作系统后,发现某个文件系统无法使用,很有 可能就是超级块出现了问题.为什么这个超级块有这么 ...

  9. Linux学习日志(一)

    1 .Ubuntu 自带python 2 和 python 3的版本,切换方法如下: shell里执行: sudo update-alternatives --install /usr/bin/pyt ...

  10. Windows 7 [Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]

    如下所示,我最近也遇到这个类似的错误(Win7 + IIS7.0),最后如下图解决 系统用户权限问题, 通过管理员运行 即可正常使用.