*s = append((*s)[:cap(*s)], make([]T, size-cap(*s))...)
}
}
+
+func Del[S ~[]T, T any](s *S, f func(t *T) (del bool)) {
+ for i := 0; i < len(*s); i++ {
+ if f(&(*s)[i]) {
+ *s = append((*s)[:i], (*s)[i+1:]...)
+ i-=1
+ }
+ }
+}
"unsafe"
)
+func TestDel(t *testing.T) {
+ var s = []int{1, 2, 3, 4, 4, 6, 4, 7}
+ Del(&s, func(t *int) (del bool) {
+ return *t == 4
+ })
+ t.Log(s)
+ if s[3] != 6 || s[4] != 7 {
+ t.FailNow()
+ }
+}
+
func TestResize(t *testing.T) {
var s = make([]byte, 10)
t.Log(unsafe.Pointer(&s), len(s), cap(s))