32 lines
534 B
Go
32 lines
534 B
Go
|
package sql
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
)
|
||
|
|
||
|
func GetRecordMap(s interface{}) map[string]interface{} {
|
||
|
rv := reflect.ValueOf(s)
|
||
|
rt := reflect.TypeOf(s)
|
||
|
|
||
|
if rt.Kind() == reflect.Ptr {
|
||
|
rv = rv.Elem()
|
||
|
rt = rt.Elem()
|
||
|
} else {
|
||
|
panic("must be ptr")
|
||
|
}
|
||
|
|
||
|
fields := make(map[string]interface{})
|
||
|
// rt := reflect.TypeOf(s)
|
||
|
//rv := reflect.ValueOf(s)
|
||
|
for i := 0; i < rt.NumField(); i++ {
|
||
|
field := rt.Field(i)
|
||
|
dbKey := field.Tag.Get("db")
|
||
|
if dbKey == "" {
|
||
|
continue
|
||
|
|
||
|
}
|
||
|
fields[dbKey] = rv.Field(i).Interface()
|
||
|
}
|
||
|
return fields
|
||
|
}
|