func GetTypeName(e Event) string {
	return GetType(e).Name()
}
GetTypeName the type of the given input value, or if input is a pointer, return the type of the pointed to object
package eventsource
import "reflect"
type Event interface {
	GetAggregateID() string
	GetUserID() string
	GetSequenceID() string
	GetTimestamp() int64
	SetSequenceID(string)
	SetTimestamp(int64)
}
type BaseEvent struct {
	AggregateID string `json:"aggregateId"`
	UserID      string `json:"userId"`
	SequenceID  string `json:"sequenceId"`
	Timestamp   int64  `json:"timestamp"`
}
func GetType(e Event) reflect.Type {
	value := reflect.TypeOf(e)
	for value.Kind() == reflect.Ptr {
		value = value.Elem()
	}
	return value
}