Sentry Answers>Go>

Check if a Slice Contains a Value in Go

Check if a Slice Contains a Value in Go

Clive B.

The Problem

You don’t know how to check whether a given value exists in a slice.

The Solution

In Go version 1.21 and later, you can use the slices.Contains function to check whether a slice contains a specific value.

The following example tests for the presence of the numbers 42 and 41 in the integer slice, []int{8, 21, 42}:

Click to Copy
package main import ( "fmt" "slices" ) func main() { example := []int{84, 21, 42} fmt.Println(slices.Contains(example, 42)) // Prints "true". fmt.Println(slices.Contains(example, 41)) // Prints "false". }

Note: In the worst case, using slices.Contains has linear time complexity, meaning that it will have to check every element in the slice.

Finding a Value in a Sorted Slice

If your slice has already been sorted, you can use the slices.BinarySearch function to check whether it contains a given value.

Click to Copy
package main import ( "fmt" "slices" ) func main() { example := []int{84, 21, 42} index, found := slices.BinarySearch(example, 42) fmt.Println(index, found) // Prints "2 true". }

This is significantly faster than the Contains function, as the BinarySearch function runs in logarithmic time.

Further Reading

  • SentryGo Error Tracking and Performance Monitoring (opens in a new tab)
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.