3x-ui/util/reflect_util/reflect.go

25 lines
687 B
Go
Raw Normal View History

2025-09-20 07:35:50 +00:00
// Package reflect_util provides reflection utilities for working with struct fields and values.
2023-02-09 19:18:06 +00:00
package reflect_util
import "reflect"
2025-09-20 07:35:50 +00:00
// GetFields returns all struct fields of the given reflect.Type.
2023-02-09 19:18:06 +00:00
func GetFields(t reflect.Type) []reflect.StructField {
num := t.NumField()
fields := make([]reflect.StructField, 0, num)
for i := 0; i < num; i++ {
fields = append(fields, t.Field(i))
}
return fields
}
2025-09-20 07:35:50 +00:00
// GetFieldValues returns all field values of the given reflect.Value.
2023-02-09 19:18:06 +00:00
func GetFieldValues(v reflect.Value) []reflect.Value {
num := v.NumField()
fields := make([]reflect.Value, 0, num)
for i := 0; i < num; i++ {
fields = append(fields, v.Field(i))
}
return fields
}