Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Срезы. Преобразование массива в слайс
Массивы и слайсы поддерживают операцию извлечения среза, которая возвращает указанный фрагмент в виде слайса. Формат операции:
<Слайс> = <Массив или слайс>[<Начало>:<Конец>]
Параметры <Начало>
и <Конец>
являются необязательными. Если параметр <Начало>
не указан, то используется значение 0
. Если параметр <Конец>
не указан, то возвращается фрагмент до конца массива или слайса. Следует также заметить, что элемент с индексом, указанном в этом параметре, не входит в возвращаемый фрагмент.
Теперь рассмотрим несколько примеров. Сначала получим все элементы:
arr1 := [5]int{1, 2, 3, 4, 5}
arr2 := arr1[:] // arr2 := arr1[0:len(arr1)]
fmt.Println(arr2) // [1 2 3 4 5]
fmt.Printf("%T\n", arr2) // []int
По существу мы преобразовали массив в слайс. Следует учитывать, что все операции доступа к элементам слайса отразятся на исходном массиве:
arr2[0] = 88
fmt.Println(arr1) // [88 2 3 4 5]
fmt.Println(arr2) // [88 2 3 4 5]
Благодаря этому мы можем передавать массив в то место, где ожидается слайс. Например, выполним сортировку массива:
arr := [5]int{5, 6, 1, 10, 3}
sort.Ints(arr[:])
fmt.Println(arr) // [1 3 5 6 10]
Получим слайсы без первого и последнего элементов исходного слайса:
arr1 := []int{1, 2, 3, 4, 5}
arr2 := arr1[1:] // Без первого элемента
fmt.Println(arr2) // [2 3 4 5]
arr3 := arr1[:len(arr1) - 1] // Без последнего элемента
fmt.Println(arr3) // [1 2 3 4]
Получим первые два элемента:
arr1 := []int{1, 2, 3, 4, 5}
arr2 := arr1[0:2] // Символ с индексом 2 не входит в диапазон
fmt.Println(arr2) // [1 2]
А теперь получим последний элемент:
arr1 := []int{1, 2, 3, 4, 5}
arr2 := arr1[len(arr1) - 1:] // Последний элемент
fmt.Println(arr2) // [5]
И, наконец, выведем фрагмент от второго элемента до четвертого включительно:
arr1 := []int{1, 2, 3, 4, 5}
arr2 := arr1[1:4] // Возвращаются элементы с индексами 1, 2 и 3
fmt.Println(arr2) // [2 3 4]
Реквизиты
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов