2025-02-27 18:59:58 +08:00

30 lines
467 B
Go

package utils
import (
"errors"
"reflect"
)
func StructToMap(s any) (map[string]any, error) {
result := make(map[string]any)
val := reflect.ValueOf(s)
if val.Kind() != reflect.Struct {
return nil, errors.New("provided value is not struct")
}
for i := range val.NumField() {
field := val.Type().Field(i)
value := val.Field(i)
if value.IsZero() || value.IsNil() {
continue
}
result[field.Name] = value.Interface()
}
return result, nil
}