mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
WTF-986 Extract the reflection bits into a Reflective package
Signed-off-by: Chris Cummer <chriscummer@me.com>
This commit is contained in:
25
utils/reflective.go
Normal file
25
utils/reflective.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// Reflective is a convenience wrapper for objects that makes it possible to
|
||||
// extract property values from the object by property name
|
||||
type Reflective struct{}
|
||||
|
||||
// StringValueForProperty returns a string value for the given property
|
||||
// If the property doesn't exist, it returns an error
|
||||
func (ref *Reflective) StringValueForProperty(propName string) (string, error) {
|
||||
v := reflect.ValueOf(ref)
|
||||
refVal := reflect.Indirect(v).FieldByName(propName)
|
||||
|
||||
if !refVal.IsValid() {
|
||||
return "", fmt.Errorf("invalid property name: %s", propName)
|
||||
}
|
||||
|
||||
strVal := fmt.Sprintf("%v", refVal)
|
||||
|
||||
return strVal, nil
|
||||
}
|
||||
Reference in New Issue
Block a user