golang中遍历汇总
直接上例子:
例子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中遍历汇总的更多相关文章
- 【GoLang】golang 最佳实践汇总
最佳实践 1 包管理 1.1 使用包管理对Golang项目进行管理,如:godep/vendor等工具 1.2 main/init函数使用,init函数参考python 1.2.1 main-> ...
- 六、golang中的结构体和方法、接口
结构体: 1.用来自定义复杂数据结构 2.struct里面可以包含多个字段(属性) 3.struct类型可以定义方法,注意和函数的区分 4.strucr类型是值类型 5.struct类型可以嵌套 6. ...
- Golang JSON操作汇总
直接把结构体编码成json数据 package main import ( "encoding/json" "fmt" _ "os" ) t ...
- golang中的RPC开发-2
RPC简介 远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 如果 ...
- golang中的标准库context解读
简介 golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + se ...
- golang中数组指针与指针数组的区别实现
指针数组和数组的指针,指的是两个不同的东西. 指针数组是有指针组成的数组,数组的指针是一个数组的指针. package main import "fmt" const MAX ...
- golang中的反射reflect详解
先重复一遍反射三定律: 1.反射可以将"接口类型变量"转换为"反射类型对象". 2.反射可以将"反射类型对象"转换为"接口类型变量 ...
- Golang中常用的代码优化点
Golang中常用的代码优化点 大家好,我是轩脉刃. 这篇想和大家聊一聊golang的常用代码写法.在golang中,如果大家不断在一线写代码,一定多多少少会有一些些代码的套路和经验.这些经验是代表你 ...
- Java中遍历Map集合的四种方法
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
随机推荐
- VBA精彩代码分享-1
今天下班前分享一下之前在网上搜到的两段好用的VBA代码,貌似都来自国外,觉得挺好,模仿不来. 第一段的功能是修改VBA控件中的文本框控件,使其右键可以选择粘贴.复制.剪切等: Option Expli ...
- 手写map, filter函数
function map(arr, fn) { let newArr = []; for (let i = 0; i < arr.length; i++) { newArr[i] = fn(ar ...
- 【php设计模式】责任链模式
责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为型模式. 在这种模式中,通常每个接收者都包含对另一个接收者的引用.如果一个对 ...
- 二元变量图形的pandas方法
数据加载: 1.散点图 上图使用下采样的方法选取了100个样本点,因为把所有的数据加载进来太多了. 2.Hexplot图 上图是一个散点图再加上热力标注的形式,可以更准确的帮助我们看出数据集中在哪些区 ...
- css优先级及其对应的权重
1.选择器的优先级 !important>内联选择器(style)>id选择器>类选择器 | 属性选择器 | 伪类选择器 > 元素选择器>通配符(*) 2.选择器的权重( ...
- 3.IOC的配置与应用(annotation的方式)
自动装载 @Autowired public class UserService { private UserDAO userDAO; public UserDAO getUserDAO() { re ...
- 2.2 使用 JAXP 对XML文档进行SAX解析
使用JAXP 对 XML文档进行 SAX解析: public class Demo1 { /** * 使用JAXP对XML文档进行SAX解析 * @throws Exception * @throws ...
- spring依赖注入时,什么时候会创建代理类
spring 依赖注入时,什么时候会创建代理类 有的会创建代理类来替代目标类的实现.比如有事务注解啊 有的直接使用目标类.啥拦截配置都没有.
- Junit5常用注解
0. IDEA中Maven项目测试类的新建方法 a. 如图在src目录下新建文件夹test b. 鼠标右键test,将该文件设置成test source c. 右键需要新建的测试类,如下图操作,选中T ...
- DB2 alter 新增/删除/修改列
SQL语句 增加列.修改列.删除列 1 添加字段 语法 : alter table 表名称 add 字段名称 类型 demo: alter table tableName add columnName ...