reflect.go 687 B

123456789101112131415161718192021222324
  1. // Package reflect_util provides reflection utilities for working with struct fields and values.
  2. package reflect_util
  3. import "reflect"
  4. // GetFields returns all struct fields of the given reflect.Type.
  5. func GetFields(t reflect.Type) []reflect.StructField {
  6. num := t.NumField()
  7. fields := make([]reflect.StructField, 0, num)
  8. for i := 0; i < num; i++ {
  9. fields = append(fields, t.Field(i))
  10. }
  11. return fields
  12. }
  13. // GetFieldValues returns all field values of the given reflect.Value.
  14. func GetFieldValues(v reflect.Value) []reflect.Value {
  15. num := v.NumField()
  16. fields := make([]reflect.Value, 0, num)
  17. for i := 0; i < num; i++ {
  18. fields = append(fields, v.Field(i))
  19. }
  20. return fields
  21. }