func arrayColumn(array interface{},key string)(result map[string]interface{},err error){
result = make(map[string]interface{})
t := reflect.TypeOf(array)
v := reflect.ValueOf(array)
if t.Kind() != reflect.Slice {
return nil, errors.New("array type not slice")
}
if v.Len() == 0{
return nil, errors.New("array len is zero")
}
for i := 0; i < v.Len(); i++{
indexv := v.Index(i)
if indexv.Type().Kind() != reflect.Struct{
return nil, errors.New("element type not struct")
}
mapKeyInterface := indexv.FieldByName(key)
if mapKeyInterface.Kind() == reflect.Invalid {
return nil,errors.New("key not exist")
}
mapKeyString, err := interfaceToString(mapKeyInterface.Interface())
if err != nil{
return nil, err
}
result[mapKeyString] = indexv.Interface()
}
return result,err
}
func interfaceToString(v interface{})(resu
golang 实现arrayColumn 将结构数组中结构内的某个字段作为map的key
最新推荐文章于 2024-01-10 21:56:10 发布
本文详细介绍了如何利用Golang编程语言,从结构体数组中提取指定字段,并将其作为Map的键,实现arrayColumn的功能。通过示例代码和步骤解析,读者将理解这一过程并能够应用到自己的项目中。
摘要由CSDN通过智能技术生成