Golang map数组按字段分类

简介: Golang map数组按字段分类

Go 类二维数组按字段分类/map数组按字段分类

原始数据


数据相应结构体

type IgmsMenu struct {
  ID          uint             `gorm:"column:id;" json:"id"`
  CategoryId  int64            `gorm:"column:category_id;" json:"category_id"`
  Name        string           `gorm:"column:name;" json:"name"`
  Price       *decimal.Decimal `gorm:"column:price;type:decimal" json:"price"`
  Remark      string           `gorm:"column:remark;" json:"remark"`
  Status      int8             `gorm:"column:status;default:0;" json:"status"`
}

原始数据返回的json数据如下:

15050284c8e04be582eafcd6510a3bb1.png

数据处理


需求


需要根据数据中的category_id来做数组分类。

原理


category_id的数据类型为int64,所以需要定义一个类型为map[int64][]map[string]interface{}的来承接处理后的数据。

  • map[int64]:这层用来承接分类后的各类数组集
  • []map[string]interface{}:单个类的数据数组

代码


func LauwenDeal(infos []model.IgmsMenu) map[int64][]map[string]interface{} {
  res := make(map[int64][]map[string]interface{})
  for _, item := range infos {
    temp := map[string]interface{}{
      "id":     item.ID,
      "name":   item.Name,
      "price":  item.Price,
      "remark": item.Remark,
    }
    res[0] = append(res[0], temp)
    res[item.CategoryId] = append(res[item.CategoryId], temp)
  }
  return res
}

处理结果


处理后返回的json数据

0d30c2bd32804afe898480c860bf34a1.png

目录
相关文章
|
3月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
65 3
|
4天前
|
监控 Serverless Go
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
|
4天前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
1月前
|
JavaScript API
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
39 1
|
2月前
|
Go
GOLANG MAP 查找
GOLANG MAP 查找
|
2月前
|
存储 Go 索引
GOLANG MAP 底层实现
GOLANG MAP 底层实现
|
2月前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之要存储用户的下单所有产品,然后查询时要进行产品分组的,一般这种字段要使用ARRAY还是MAP
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
JavaScript 前端开发
JavaScript 数组的函数 map/forEach/reduce/filter
JavaScript 数组的函数 map/forEach/reduce/filter
|
3月前
|
存储 编译器 Go
Golang深入浅出之-掌握Go语言Map:初始化、增删查改与遍历
【4月更文挑战第21天】Go语言中的`map`提供快速的键值对操作,包括初始化、增删查改和遍历。初始化时,推荐使用`make()`函数,如`make(map[string]int)`。插入和查询键值对直接通过索引访问,更新则重新赋值。删除键值对需用`delete()`函数,确保键存在。遍历map常用`for range`,注意避免在遍历中修改map。了解这些并避免易错点,能提升代码效率和可读性。
44 1
Golang深入浅出之-掌握Go语言Map:初始化、增删查改与遍历
|
2月前
|
JSON Go 数据格式
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】(4)
Go 语言基础之指针、复合类型【数组、切片、指针、map、struct】