Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 909 Bytes

remove-an-element-from-a-slice-go.org

File metadata and controls

26 lines (19 loc) · 909 Bytes

Remove an element from a slice in Go

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:

Order matters

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.

Order is not important

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]
}