@miguel_ritchie
Срезы в Golang используются для работы с частями массивов или других срезов. Они представляют собой ссылки на заданную часть массива.
Синтаксис создания среза:
1
|
slice := arr[start:stop] |
где arr - массив, start - индекс элемента, с которого начинать срез; stop - индекс элемента, на котором закончить срез.
Пример:
1 2 3 |
arr := [5]int{1, 2, 3, 4, 5} slice := arr[1:3] // создаем срез из элементов с индексами от 1 до 3 (не включая 3) fmt.Println(slice) // [2 3] |
Срез можно создавать и без указания start и stop индексов. В этом случае будет создан срез, содержащий все элементы массива:
1
|
slice := arr[:] |
Также можно указывать только start индекс. В этом случае срез будет содержать все элементы массива, начиная с указанного индекса:
1
|
slice := arr[2:] |
Для добавления элементов в срез используется функция append:
1 2 3 |
slice := []int{1, 2, 3} slice = append(slice, 4, 5) fmt.Println(slice) // [1 2 3 4 5] |
Для удаления элементов из среза можно использовать операторы слайсинга:
1 2 3 |
slice := []int{1, 2, 3, 4, 5} slice = append(slice[:2], slice[3:]...) fmt.Println(slice) // [1 2 4 5] |
При выполнении операции слайсинга создается новый срез, содержащий указанные элементы. В примере выше мы создаем новый срез, который содержит элементы с индексами от 0 до 2 и от 3 до конца существующего среза slice. Затем мы присваиваем этот новый срез переменной slice, тем самым заменяя исходный срез новым. При этом элемент с индексом 2 удаляется из исходного среза.
@miguel_ritchie
Вот еще несколько примеров использования срезов в Golang:
1 2 3 |
str := "hello" slice := []byte(str) fmt.Println(slice) // [104 101 108 108 111] |
1 2 3 4 |
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[:]
slice[2] = 10
fmt.Println(arr) // [1 2 10 4 5]
|
1 2 3 4 |
slice := []int{1, 2, 3, 4, 5}
for i, v := range slice {
fmt.Println(i, v)
}
|
1 2 |
matrix := [][]int{{1, 2}, {3, 4}, {5, 6}}
fmt.Println(matrix[1][0]) // 3
|
Срезы в Golang очень гибкие и удобные структуры данных, которые позволяют удобно работать с частями массивов и других срезов.