Sobes.tech
Junior

Go'da dilimler ve diziler arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Массивы имеют фиксированную длину, определенную при создании. Слайсы представляют собой динамические представления базовых массивов.

Основные отличия:

Признак Массив Слайс
Длина Фиксированная Динамическая
Создание [N]Тип (N - размер) []Тип или make([]Тип, len, cap)
Передача По значению По ссылке (на базовый массив)
Изменение размера Невозможно Возможно (с помощью append)

Примеры:

// Объявление и инициализация массива
var arr [3]int // массив из 3х int, инициализирован нулями
arr2 := [2]string{"a", "b"} // массив из 2х string
// Объявление и инициализация слайса
var slice []int // nil слайс
slice2 := []string{"x", "y", "z"} // слайс из 3х string
slice3 := make([]int, 5) // слайс из 5ти int, инициализирован нулями
slice4 := make([]int, 2, 5) // слайс из 2х int, инициализирован нулями, с емкостью 5
// Пример поведения слайса
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4] // слайс referencing arr[1], arr[2], arr[3]
slice[0] = 99 // изменяет arr[1]

// Изменение размера слайса
slice = append(slice, 100) // создает новый базовый массив, если текущий не вмещает элемент

Слайсы являются более гибкими и часто используются вместо массивов в Go. Они предоставляют удобный способ работы с последовательностями данных переменной длины.