package ssob import ( "fmt" "reflect" ) func allocType(out reflect.Value) (err error) { if out.Type().Kind() != reflect.Ptr || out.IsNil() { return fmt.Errorf("ssob: Error allocating type (Got nil pointer): %w", ErrValueInvalid) } t := out.Elem().Type() ret := reflect.New(t) retp := ret for { if reflect.Ptr != t.Kind() { break } retp = retp.Elem() t = retp.Type().Elem() retp.Set(reflect.New(t)) } out.Elem().Set(reflect.Indirect(ret)) return nil }