直接上例子:

例子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. 主流RPC框架详解,以及与SOA、REST的区别

    什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...

  2. 服务框架 Pigeon 的设计与实现

    1.服务框架Pigeon架构 监控系统 - CAT,负责调用链路分析.异常监控告警 配置中心 - Lion,负责一些开关配置读取 服务治理 - Governor 一个interface定义为一个服务, ...

  3. SSO单点登录 与 CAS

    本文转载自http://www.imooc.com/u/2245641/articles非常好的sso单点登录理解文章 作者: 常明,Java架构师 Web应用系统的演化总是从简单到复杂,从单功能到多 ...

  4. JavaSpring【五、AOP基础】

    概念: AOP--面向切面编程,通过预编译/动态代理实现程序功能的统一维护 主要功能是:日志.性能统计.安全控制.事务处理.异常处理 实现方式 预编译--AspectJ 动态代理--SpringAOP ...

  5. 九:MVC主从表数据加载

    EF对关联表数据加载的三种方式: 延迟加载:只有在需要的时候加载数据.EF默认的加载方式. 贪婪加载:一次性组织好数据,全部加载到内存中. 显式加载:需要通过代码手动加载关联表. 延迟加载 virtu ...

  6. Linux上jdk,mysql,tomcat安装

    一:RPM(红帽软件包管理器):相当于windows的添加/卸载程序(控制面板),进行程序的安装.更新.卸载.查看: 本地程序安装:rpm -ivh 程序名 本地程序查看:rpm -qa 本地程序卸载 ...

  7. git 获得当前分支名及其对应的远程分支

    git 获得当前分支名及其对应的远程分支 git symbolic-ref -q --short HEADgit rev-parse --abbrev-ref --symbolic-full-name ...

  8. golang restful api

    https://medium.com/@petrousov/how-to-build-a-restful-api-in-go-for-phonebook-app-d55f7234a10 ------- ...

  9. Atcoder Educational DP Contest 题解

    A - Frog 1/B - Frog 2 入门... #include<cstdio> #define abs(a) ((a)>=0?(a):(-(a))) #define min ...

  10. R语言简单介绍

    R语言 概述 R语言是用于统计分析,图形表示和报告的编程语言和软件环境. R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发. R语言的 ...