Files
2023-09-17 18:07:09 +08:00

41 lines
677 B
Go

package utils
import (
"bytes"
"encoding/gob"
"fmt"
"reflect"
)
// Clone deep-clones src object to dst object
func Clone(src, dst any) error {
var buf bytes.Buffer
if err := gob.NewEncoder(&buf).Encode(src); err != nil {
return err
}
err := gob.NewDecoder(bytes.NewBuffer(buf.Bytes())).Decode(dst)
if err != nil {
return err
}
return nil
}
// PrintObjectFields prints all fields in specified object
func PrintObjectFields(obj any) {
if obj == nil {
return
}
elem := reflect.ValueOf(obj).Elem()
typ := elem.Type()
for i := 0; i < elem.NumField(); i++ {
field := elem.Field(i)
fmt.Printf("[%s] %v\n", typ.Field(i).Name, field.Interface())
}
}