golang中将slice转化成map,slice中的值是struct结构

Go语言中slice转map的反射实践
本文介绍了如何使用Go语言的反射机制,将slice转换为map,针对struct数据并动态绑定键值,实现实时场景的数据转换

最近写代码发现go没有关于slice转map的包或者网上也没有写的靠谱的转化代码,但是现实场景中,我们很容易遇到这种问题,就是获取到的slice []struct 数据类型,我们需要将它转化成map之后被其他的代码取用,废话不多说,我们开始;

        首先肯定是需要用到反射reflect进行通用化,不然的话无法试用所有的方法。直接贴代码:

package main

import (
	"fmt"
	_ "go/types"
	"reflect"
)

type User struct {
	Age       int    `json:"age"`
	Name      string `json:"name"`
	Sex       string `json:"sex"`
	Education int    `json:"education"`
}

func main() {
	var list []User
	info1 := User{
		Age:11,
		Name:"周杰伦1",
		Sex:"man",
		Education:10000,
	}
	info2 := User{
		Age:12,
		Name:"周杰伦2",
		Sex:"man",
		Education:20000,
	}
	info3 := User{
		Age:13,
		Name:"周杰伦3",
		Sex:"man",
		Education:30000,
	}

	list = append(list, info1)
	list = append(list, info2)
	list = append(list, info3)
	mapInfo := Slice2Map(list, "Name")
	mapInfo1 := Slice2Map(list, "Age")
	mapInfo2 := Slice2Map(list, "Education")
	fmt.Printf("获取到的map1是:%+v \n", mapInfo)
	fmt.Printf("获取到的map2是:%+v \n", mapInfo1)
	fmt.P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值