insert_slice.go 580 B

1234567891011121314151617181920212223
  1. // insert_slice.go
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func main() {
  7. s := []string{"M", "N", "O", "P", "Q", "R"}
  8. in := []string{"A", "B", "C"}
  9. res := InsertStringSlice(s, in, 0) // at the front
  10. fmt.Println(res) // [A B C M N O P Q R]
  11. res = InsertStringSlice(s, in, 3) // [M N O A B C P Q R]
  12. fmt.Println(res)
  13. }
  14. func InsertStringSlice(slice, insertion []string, index int) []string {
  15. result := make([]string, len(slice)+len(insertion))
  16. at := copy(result, slice[:index])
  17. at += copy(result[at:], insertion)
  18. copy(result[at:], slice[index:])
  19. return result
  20. }