ssob/allocator.go

28 lines
481 B
Go

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
}