Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmSlDV 159 of 350 menu
◀ ▶

Удаление по значению в Go

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

Найдем 20 перебором и удалим через пакет slices:

nums := []int{10, 20, 30} idx := -1 for i := 0; i < len(nums); i++ { if nums[i] == 20 { idx = i break } } if idx >= 0 { nums = slices.Delete(nums, idx, idx+1) } fmt.Println(nums)

На экране 10 и 30. Если значение не найдено, цикл оставит idx равным -1 и срез не изменится.

Тот же результат можно собрать новым срезом: на каждом круге добавляют элемент, только если он не равен искомому числу.

Дан следующий срез:

nums := []int{1, 2, 3}

Уберите 2: найдите индекс циклом и удалите участок через пакет slices.

Дан следующий срез:

nums := []int{5, 7, 5}

Соберите в clean новый срез без 5, добавляя в конец только другие значения.

Скажите, зачем после поиска проверять, что индекс не отрицательный.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить