V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  kuqma98  ›  全部回复第 5 页 / 共 5 页
回复总数  89
1  2  3  4  5  
2023 年 3 月 23 日
回复了 kl7180328 创建的主题 问与答 最近的苦恼
下班时间给她安排工作
2023 年 3 月 22 日
回复了 Macklemore 创建的主题 职场话题 关键时期 Offer 对比
选 A ,半导体一片大好,新能源不好说。“整体生活消费稍高,住和食”,高出来的工资完全可以包住这一点吧。
2023 年 3 月 22 日
回复了 rrubick 创建的主题 北京 北京开始查电动车过马路不下车推行的行为了
周末刚因为电动车载人被罚了 20 ,在永丰路北清路路口
考虑户口的话没必要后悔,待遇和工作都没变,而你有了拿户口的资格。
@listenfree
假设你有一个结构体类型为 Person ,其中有一个字段 id ,类型为 int ,表示人员的唯一标识符。你可以编写一个通用的方法,将一个[]Person 类型的切片,根据 id 字段,转换成一个 map[int]Person 类型的映射表。以下是一个示例实现:

type Person struct {
id int
name string
age int
}

func SliceToMapByID(slice interface{}) (map[int]interface{}, error) {
value := reflect.ValueOf(slice)
if value.Kind() != reflect.Slice {
return nil, errors.New("input is not a slice")
}

mapValue := reflect.MakeMapWithSize(reflect.MapOf(reflect.TypeOf(int(0)), value.Type().Elem()), value.Len())

for i := 0; i < value.Len(); i++ {
elem := value.Index(i)
id := elem.FieldByName("id").Interface().(int)
mapValue.SetMapIndex(reflect.ValueOf(id), elem)
}

return mapValue.Interface().(map[int]interface{}), nil
}

这个方法的输入参数是一个空接口类型,可以接受任何类型的切片作为输入。使用反射来处理输入参数的类型,并检查它是否为切片类型。如果是,就创建一个空的映射表,然后遍历切片中的每个元素,提取它的 id 字段的值,并将该元素添加到映射表中。最后返回一个 map[int]interface{}类型的映射表和一个 error 类型的错误(如果有的话)。

请注意,由于使用了反射,这个方法的性能可能不是非常高效,特别是对于大型切片来说。因此,如果你知道你的切片类型是[]Person ,你也可以直接编写一个特定类型的方法,而不是使用反射。
2023 年 2 月 14 日
回复了 lyhang 创建的主题 程序员 2023 新年新新新新气象-北京程序员交流群
adulna 求拉
2023 年 1 月 12 日
回复了 overthemoon 创建的主题 问与答 相亲送女孩子什么见面礼好
盲盒
2023 年 1 月 5 日
回复了 8888888888 创建的主题 问与答 结了婚的老哥们进来聊聊呗
元旦刚买的戒指和手镯,自己的一点感悟。
钻戒的确不该买,但又是首饰里女生最喜欢的,如果女生不是一口同意不买钻戒,就必须买了。
买三金是买首饰不是买理财,首饰的品牌很重要,1 万 2 可以买 20 克的周大福或者六福珠宝,也可以买 24 克周六福,多 4 克戴手上看不出来感觉不出来,但是品牌叫得响说得出。
2022 年 12 月 9 日
回复了 damai0419 创建的主题 北京 北京有没有靠谱一点,修 macbook 的地儿?
dr mac 维修工作室,在中关村,淘宝有点可以先问问价
1  2  3  4  5  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3833 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 00:49 · PVG 08:49 · LAX 17:49 · JFK 20:49
♥ Do have faith in what you're doing.