How to find the index of a value in a slice

Published Thu 6 Jul, 2023
Last updated Wed 16 Aug, 2023
RSS

Sometimes you need to find the index of a value in a slice, and often you’re only interested in the first occurrence of that value.

This is typically done using an Index function, which returns the index of the value in the slice or -1 when it’s not found.

Depending on your Go version you can use a different approach:

If you are using a Go version that does not support generics, you can always implement your own Index function. See the example below:

main.go
package main

import (
	"fmt"
	"slices"
)

func main() {
	s := []string{"🌱", "🪡", "🌱"}
	x := "🪡"
	y := "🙈"

	fmt.Println("slices.Index:")
	fmt.Printf("index of \"%s\"? %v\n", x, slices.Index(s, x))
	fmt.Printf("index of \"%s\"? %v\n", y, slices.Index(s, y))

	fmt.Println("---")

	fmt.Println("Index:")
	fmt.Printf("index of \"%s\"? %v\n", x, Index(s, x))
	fmt.Printf("index of \"%s\"? %v\n", y, Index(s, y))
}

// Index returns the index of the first occurrence of v in s.
// Index returns -1 if v is not found in s.
func Index(s []string, v string) int {
	for i, vs := range s {
		if vs == v {
			return i
		}
	}

	return -1
}

Stay in the loop, subscribe to my newsletter.

for _, f := range []string{
  "🏋 Excercises and solutions",
  "🔥 Subscriber-only content",
  "💌 New posts in your inbox",
  "💸 Discounts",
} {
  you.Enjoy(f)
}
Privacy policy