> Для чего используется синтаксис срезов в Go (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Ozon

Стек: Go

> Пример ответа

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

  1. Извлечение подстроки или подмассива - например, s[1:4] вернёт элементы с индексами 1, 2, 3.
  2. Эффективная работа с памятью - новый срез ссылается на тот же базовый массив, поэтому операция выполняется за O(1) и не требует выделения новой памяти.
  3. Управление ёмкостью - трёхиндексная форма s[low:high:max] позволяет ограничить ёмкость результирующего среза, предотвращая случайное расширение за пределы исходных данных.
  4. Итерация и модификация - срезы часто используются в циклах для обработки части коллекции, например, for _, v := range arr[2:5].

Пример:

GO
arr := []int{0, 1, 2, 3, 4, 5}
sub := arr[1:4] // [1, 2, 3]
sub[0] = 10 // изменяет и arr[1] = 10

Важно помнить, что срезы - это ссылочные типы, и изменения в полученном срезе влияют на исходные данные, если не используется копирование через copy().

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью