go slice切片的删除、插入操作
// SliceRemove 删除切片指定位置的元素 func SliceRemove(s []string, i int) []string { if i >= len(s) { return s } //return append(s[:i], s[i+1:]...) // 会导致s改变 return append(append([]string{}, s[:i]...), s[i+1:]...) } // SliceRemove2 删除切片指定位置的元素 func SliceRemove2(s []string, i int) []string { if i >= len(s) { return s } s2 := make([]string, len(s)-1) n := 0 for k, v := range s { if k == i { continue } s2[n] = v n++ } return s2 } // SliceRemoveMany 删除切片指定位置的多个元素 func SliceRemoveMany(s []string, i int, j int) []string { if i >= len(s) { return s } return append(append([]string{}, s[:i]...), s[j:]...) } // SliceRemoveMany2 删除切片指定位置的多个元素 func SliceRemoveMany2(s []string, i int, j int) []string { if i >= len(s) { return s } s2 := make([]string, len(s)-(j-i)) n := 0 for k, v := range s { if k >= i && k < j { continue } s2[n] = v n++ } return s2 } // SliceInsert 在切片的指定位置插入切片 func SliceInsert(s []string, i int, val []string) []string { return append(s[:i], append(val, s[i:]...)...) } // SliceInsert2 在切片的指定位置插入切片 func SliceInsert2(s []string, i int, val []string) []string { if i >= len(s) { return s } s2 := make([]string, len(s)+len(val)) n := 0 for k, v := range s { if k == i { for _, v2 := range val { s2[n] = v2 n++ } } s2[n] = v n++ } return s2 }