21 lines
390 B
Go
21 lines
390 B
Go
//go:build go1.18
|
|
// +build go1.18
|
|
|
|
package danger
|
|
|
|
import (
|
|
"reflect"
|
|
"unsafe"
|
|
)
|
|
|
|
func ExtendSlice(t reflect.Type, s *Slice, n int) Slice {
|
|
arrayType := reflect.ArrayOf(n, t.Elem())
|
|
arrayData := reflect.New(arrayType)
|
|
reflect.Copy(arrayData.Elem(), reflect.NewAt(t, unsafe.Pointer(s)).Elem())
|
|
return Slice{
|
|
Data: unsafe.Pointer(arrayData.Pointer()),
|
|
Len: s.Len,
|
|
Cap: n,
|
|
}
|
|
}
|