How to check if a slice contains a value

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

Some languages have an in operator that checks if a collection contains a certain value. Go does not.

To achive the same functionality you have several options depending on your version.

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 SliceContains function. See the example below:

package main

import (

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

	fmt.Printf("s contains \"%s\"? %v\n", x, slices.Contains(s, x))
	fmt.Printf("s contains \"%s\"? %v\n", y, slices.Contains(s, y))


	fmt.Printf("s contains \"%s\"? %v\n", x, SliceContains(s, x))
	fmt.Printf("s contains \"%s\"? %v\n", y, SliceContains(s, y))

// SliceContains returns true if s contains v.
func SliceContains(s []string, v string) bool {
	for _, vs := range s {
		if vs == v {
			return true

	return false

Stay in the loop, subscribe to my newsletter.

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