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 }