| 1234567891011121314151617 |
- package utils
- import (
- "reflect"
- "unsafe"
- )
- // AccessField can used to access unexported field of a struct
- // valueType must be the exact type of the field or it will panic
- func AccessField[valueType any](obj any, fieldName string) *valueType {
- field := reflect.ValueOf(obj).Elem().FieldByName(fieldName)
- if field.Type() != reflect.TypeOf(*new(valueType)) {
- panic("field type: " + field.Type().String() + ", valueType: " + reflect.TypeOf(*new(valueType)).String())
- }
- v := (*valueType)(unsafe.Pointer(field.UnsafeAddr()))
- return v
- }
|