Contains method for a slice

vosmith picture vosmith · May 7, 2012 · Viewed 294.7k times · Source

Is there anything similar to a slice.contains(object) method in Go without having to do a search through each element in a slice?

Answer

tux21b picture tux21b · May 7, 2012

Mostafa has already pointed out that such a method is trivial to write, and mkb gave you a hint to use the binary search from the sort package. But if you are going to do a lot of such contains checks, you might also consider using a map instead.

It's trivial to check if a specific map key exists by using the value, ok := yourmap[key] idiom. Since you aren't interested in the value, you might also create a map[string]struct{} for example. Using an empty struct{} here has the advantage that it doesn't require any additional space and Go's internal map type is optimized for that kind of values. Therefore, map[string] struct{} is a popular choice for sets in the Go world.