Задачи Go на массивы, срезы и map с проверкой кода
Четыре задачи Go на перебор и коллекции: цикл с continue, массив фиксированного размера, срез после append и проверка ключа map. Все упражнения проверяют код; заполняйте решение по интерфейсу конкретной задачи.
Чем отличаются структуры
У массива длина входит в тип. Срез описывает участок базового массива и хранит длину и ёмкость. Несколько срезов могут разделять одно хранилище, поэтому изменение элемента через один из них может быть видно через другой.
append возвращает новый заголовок среза. Если ёмкости хватает, он может использовать прежний базовый массив; если не хватает — выделяется другое хранилище. Поэтому результат append нужно присваивать, а влияние на другие срезы проверять по конкретным len, cap и индексам.
Отдельная ловушка map
Для map[string]int чтение отсутствующего ключа возвращает 0. Но сохранённый 0 тоже допустим. Два результата value, ok := m[key] различают эти ситуации. Если после delete нужно сообщить, существовал ли ключ, проверку ok выполните до удаления. Порядок обхода map не гарантируется.
Как проходить набор
Сначала отработайте перебор, затем выпишите типы и ожидаемые размеры результата. В задаче на append нарисуйте базовый массив и диапазоны срезов. В задаче на map отдельно проверьте существующий ключ со значением 0 и отсутствующий ключ. Автоматическая проверка помогает проверить итог, а объяснение причины ошибки остаётся частью вашей работы.
Задачи в подборке
- Go for и continue: пропуск чётных чисел в цикле.
- Go: обход массива [7]int и возврат среза []int.
- Go append и базовый массив: почему меняется исходный срез.
- Go map: проверка существования ключа и удаление нулевого значения.
Проверка доступна без регистрации. Для сохранения прогресса переходите в соответствующий урок курса. Курс с объяснениями по порядку.
- Go for и continue: пропуск чётных чисел в цикле
Пройдите номера кругов циклом for, пропустите чётные через continue и подсчитайте нечётные.
Golang с нуля - Go: обход массива [7]int и возврат среза []int
Найдите минимум, максимум и целое среднее в массиве из семи чисел, верните результаты срезом в заданном порядке.
Golang с нуля - Go append и базовый массив: почему меняется исходный срез
Возьмите подсрез и добавьте элемент через append; проследите, как общая ёмкость меняет исходный срез.
Golang с нуля - Как проверить наличие ключа в map Go: value, ok и delete
Почему нулевое значение не доказывает отсутствие ключа Go map? Пример value, ok, удаление через delete и задача с проверкой.
Golang с нуля
