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
  • Syntax.fmListen to the Syntax Podcast
  • Syntax.fm logo
    Listen to the Syntax Podcast

    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 100,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.

© 2024 • Sentry is a registered Trademark of Functional Software, Inc.