shithub: hell

ref: b0c71eb21326428b635f195adf823575cf22170e
dir: /reflect.go/

View raw version
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)
		}
	}
}