copy(buf, t.buf[:t.bufsize])
return
}
+
+func DelFront[S ~[]*T, T any](s S, beforeIndex int) S {
+ return s[:copy(s, s[beforeIndex+1:])]
+}
+
+func AddFront[S ~[]*T, T any](s S, t *T) S {
+ s = append(s, nil)
+ s = s[:1+copy(s[1:], s)]
+ s[0] = t
+ return s
+}
+
+func DelBack[S ~[]*T, T any](s S, fromIndex int) S {
+ return s[:fromIndex]
+}
+
+func AddBack[S ~[]*T, T any](s S, t *T) S {
+ return append(s, t)
+}
import (
"bytes"
"testing"
+ "unsafe"
)
func TestXxx(t *testing.T) {
t.Fatal()
}
}
+
+func Test3(t *testing.T) {
+ i := 1
+ var s []*int
+ var p = unsafe.Pointer(&s)
+ s = append(s, &i, &i, &i)
+ if unsafe.Pointer(&s) != p || cap(s) != 3 || len(s) != 3 {
+ t.Fatal()
+ }
+ s = DelFront(s, 2)
+ if unsafe.Pointer(&s) != p || cap(s) != 3 || len(s) != 0 {
+ t.Fatal()
+ }
+ s = AddFront(s, &i)
+ if unsafe.Pointer(&s) != p || cap(s) != 3 || len(s) != 1 {
+ t.Fatal()
+ }
+ s = AddBack(s, &i)
+ if unsafe.Pointer(&s) != p || cap(s) != 3 || len(s) != 2 {
+ t.Fatal()
+ }
+ s = DelBack(s, 1)
+ if unsafe.Pointer(&s) != p || cap(s) != 3 || len(s) != 1 {
+ t.Fatal()
+ }
+}