ref: 40b380a7a4bb3ded2d29cf0a415b49660dc7c454
dir: /reflect.go/
package main
import (
"fmt"
"reflect"
)
func (hc *Hellclient) PrintObjectProperties(obj any) {
val := reflect.ValueOf(obj)
if val.Kind() == reflect.Ptr {
val = val.Elem()
}
if val.Kind() != reflect.Struct {
fmt.Printf("%v: %v\n", val.Kind(), obj)
return
}
typ := val.Type()
index := "a"
// Iterate over the fields of the struct.
for i := 0; i < val.NumField(); i++ {
fieldValue := val.Field(i)
fieldType := typ.Field(i)
if fieldType.IsExported() {
saveDebugRef(hc.debugMap, fieldValue.Interface(), index)
fmt.Printf("!%s %s: %v\n", index, fieldType.Name, fieldValue.Interface())
index = IncrementString(index)
}
}
}