How to find an element in a slice/array

Go doesn’t have an out-of-the-box linear search function for slices and arrays. Here are two example linear search implemen­tations, which you can use as templates.

// 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)

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

Faster alternatives

If the array is sorted, you can use a binary search instead. This will be much more efficient, since binary search runs in worst-case logarithmic time, making O(log n) comparisons, where n is the size of the slice.

If you are doing repeated searches and updates, you may want to use a map instead of an array. A map provides lookup, insert, and delete operations in O(1) amortized time.

Further reading

Map essentials in 4 easy steps

Share this page: