30 lines
449 B
Go
Raw Normal View History

2025-02-27 18:59:58 +08:00
package utils
import (
2025-03-14 12:41:11 +08:00
"fmt"
2025-02-27 18:59:58 +08:00
"reflect"
)
func StructToMap(s any) (map[string]any, error) {
result := make(map[string]any)
val := reflect.ValueOf(s)
if val.Kind() != reflect.Struct {
2025-03-14 12:41:11 +08:00
return nil, fmt.Errorf("provided value is not struct")
2025-02-27 18:59:58 +08:00
}
for i := range val.NumField() {
field := val.Type().Field(i)
value := val.Field(i)
2025-03-14 12:41:11 +08:00
if !value.IsValid() {
2025-02-27 18:59:58 +08:00
continue
}
result[field.Name] = value.Interface()
}
return result, nil
}