Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: slice, array, data structures, append

В чем разница слайсов и массивов в Go?

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

Короткий ответ

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

Длинный ответ

Массивы в Go — это фиксированные структуры данных, размер которых определяется во время объявления. Они имеют строго определённую длину, и изменение её невозможно. Например:

var arr [3]int = [3]int{1, 2, 3} // Массив длины 3

Размер массива (3) включается в его тип, что делает его использование ограниченным, если требуется динамическое изменение размера.

Слайсы — это абстракция поверх массивов, предоставляющая более гибкую работу с последовательностями. Они поддерживают изменение длины и имеют три свойства:

  • Указатель на базовый массив.

  • Длина (len), определяющая количество элементов.

  • Ёмкость (cap), определяющая максимальное количество элементов, которые могут быть добавлены без перераспределения памяти.

Пример работы со слайсами:

package main
import "fmt"

func main() {
    	// Создание слайса
    	slice := []int{1, 2, 3}
    	fmt.Println("Слайс:", slice)

    	// Добавление элемента
    	slice = append(slice, 4)
    	fmt.Println("После добавления:", slice)

    	// Длина и ёмкость
    	fmt.Println("Длина:", len(slice), "Ёмкость:", cap(slice))
}

Различия:

  • Размер: массивы имеют фиксированный размер, слайсы — динамический.

  • Гибкость: слайсы можно расширять с помощью функции append.

  • Тип: размер является частью типа массива, но не является частью типа слайса.

В каких случаях использовать:

  • Используйте массивы, когда нужен фиксированный размер и максимальная производительность.

  • Используйте слайсы для динамических коллекций данных.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#slice

#array

#data structures

#append

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.