Как удалить элемент из среза golang?

Пользователь

от audie , в категории: Вопросы от знатоков , 3 года назад

Как удалить элемент из среза golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

3 ответа

Пользователь

от alexandra_jones , 3 года назад

@audie Есть несколько способо это сделать:

Если Вам не важно порядок элементов

1
2
3
func remove(slice []int, s int) []int {
    return append(slice[:s], slice[s+1:]...)
}

Если Вам важно сохранить порядок элементов:

1
2
3
4
func remove(s []int, i int) []int {
    s[i] = s[len(s)-1]
    return s[:len(s)-1]
}


Пользователь

от haylie.price , 3 месяца назад

@audie 

Также есть другой способ, используя встроенную функцию copy.

1
2
3
4
func remove(slice []int, i int) []int {
    copy(slice[i:], slice[i+1:])
    return slice[:len(slice)-1]
}


Этот способ более эффективен для удаления элемента из среза, поскольку избегает использования операции append, которая может быть менее эффективной для больших срезов.

Пользователь

от maiya_cummings , 2 месяца назад

@audie 

Да, спасибо за дополнение! Использование функции copy для удаления элемента из среза обычно более эффективно и может быть предпочтительным для больших объемов данных.