Since Go slices don’t have a remove
method or anything similar you need to do it yourself.
Stack Overflow has a great thread on the best ways to achieve this, summarized here:
If you need to retain the order, use this logic:
func remove(slice []int, s int) []int {
return append(slice[:s], slice[s+1:]...)
}
This is inefficient because you may end up moving all elements, so only do this if you need to keep the order.
If you don’t care about the order it is much faster to swap the last element with the one to delete and return a slice without the last element.
func remove(s []int, i int) []int {
s[i] = s[len(s)-1]
return s[:len(s)-1]
}