Срезы (slices) в GO
НАВИГАЦИЯ ПО СТРАНИЦЕ
Срезы (slices) в GO — это динамические структуры данных, представляющие собой фрагмент массива. В отличие от массивов, срезы не имеют фиксированной длины и предоставляют более удобные возможности для работы с коллекциями данных.
Создание среза
Срез можно создать, указав диапазон элементов из существующего массива или с помощью встроенной функции make.
Создание среза из массива:
package main import "fmt" func main() { // Создание среза из массива numbers := [5]int{1, 2, 3, 4, 5} slice := numbers[1:4] // Срез содержит элементы с индексами 1, 2, 3 fmt.Println(slice) // Вывод: [2 3 4] }
Создание среза с использованием функции make:
package main import "fmt" func main() { // Создание среза с использованием функции make slice := make([]int, 3) // Срез с длиной 3 и емкостью 3 fmt.Println(slice) // Вывод: [0 0 0] }
Операции срезов
Добавление элементов в срез:
package main import "fmt" func main() { slice := []int{1, 2, 3} // Добавление элемента в конец среза slice = append(slice, 4) fmt.Println(slice) // Вывод: [1 2 3 4] // Добавление нескольких элементов в конец среза slice = append(slice, 5, 6) fmt.Println(slice) // Вывод: [1 2 3 4 5 6] }
Изменение существующих элементов среза:
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} // Изменение элемента среза slice[2] = 10 fmt.Println(slice) // Вывод: [1 2 10 4 5] }
Удаление элементов из среза:
package main import "fmt" func main() { slice := []int{1, 2, 3, 4, 5} // Удаление элемента среза по индексу indexToRemove := 2 slice = append(slice[:indexToRemove], slice[indexToRemove+1:]...) fmt.Println(slice) // Вывод: [1 2 4 5] }
Многомерные срезы
GO также поддерживает многомерные срезы:
package main
import "fmt"
func main() {
// Многомерный срез
matrix := [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
fmt.Println(matrix)
// Вывод:
// [[1 2 3]
// [4 5 6]
// [7 8 9]]
}
Срезы в GO предоставляют удобные возможности для работы с коллекциями данных. Они автоматически управляют памятью и позволяют более гибко манипулировать данными по сравнению с массивами.