# Go: Find an element in a slice

Go has no generic search function for slices or arrays. It's straightforward to write your own **linear search**.

```
// Contains tells whether a contains x.
func Contains(a []string, x string) bool {
for _, n := range a {
if x == n {
return true
}
}
return false
}
```

```
// Find returns the smallest index i at which x == a[i],
// or len(a) if there is no such index.
func Find(a []string, x string) int {
for i, n := range a {
if x == n {
return i
}
}
return len(a)
}
```

## More efficient alternatives

If the slice is sorted, the search can be performed more efficiently with a **binary search**.

If you are doing many searches, consider using a **map** instead.

## Comments

Be the first to comment!