github.com/maikovskiys/l1tasks@v0.0.0-20230927052451-6436d7687dc9/develop/dev23/main.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  /*
     6  Удалить i-ый элемент из слайса.
     7  */
     8  const elementIndex = 3
     9  
    10  func main() {
    11  
    12  	//#1 сохраняем порядок элементов; мутируем исходный массив
    13  	arr1 := []int{1, 2, 3, 4, 5, 6, 7}
    14  	resultV1 := deleteElementV1(arr1, elementIndex)
    15  	fmt.Println(resultV1)
    16  
    17  	//#2 Не сохраняем порядок элементов; мутируем исходный массив
    18  	arr2 := []int{1, 2, 3, 4, 5, 6, 7}
    19  	resultV2 := deleteElementV2(arr2, elementIndex)
    20  	fmt.Println(resultV2)
    21  
    22  	//#3 сохраняем порядок элементов; не изменяем исходный массив
    23  	arr3 := []int{1, 2, 3, 4, 5, 6, 7}
    24  	resultV3 := deleteElementV3(arr3, elementIndex)
    25  	fmt.Println(resultV3)
    26  
    27  }
    28  func deleteElementV1(arr []int, i int) []int {
    29  
    30  	return append(arr[:i], arr[i+1:]...)
    31  }
    32  func deleteElementV2(arr []int, i int) []int {
    33  	arr[i] = arr[len(arr)-1]
    34  	return arr[:len(arr)-1]
    35  }
    36  func deleteElementV3(arr []int, i int) []int {
    37  	newArr := make([]int, 0)
    38  	newArr = append(newArr, arr[:i]...)
    39  	return append(newArr, arr[i+1:]...)
    40  }