Go Errors.Is() (Go 1.13) 🎯

beginner
8 min

Go Errors.Is() (Go 1.13) 🎯

Welcome to our deep dive into Go's powerful error handling mechanism! In this lesson, we'll explore the errors.Is() function, which is a handy tool for checking if one error is another or a type of another error. Let's get started!

Understanding Errors in Go 📝

Before we dive into errors.Is(), let's quickly review Go's error handling system. In Go, errors are represented as values of the error type, which is an interface with a single method: Error().

go
type error interface { Error() string }

The errors.Is() Function 💡

The errors.Is() function is a part of Go's standard library, and it helps you determine if a given error is exactly the same error or a type of the error you're comparing against. It returns true if the first error is the same error value or a type of the second error.

Here's the signature of the errors.Is() function:

go
func errors.Is(err, target error) bool

Where err is the error you want to check, and target is the error you want to compare err against.

Examples 💡

Example 1: Basic Usage

Let's see an example of how errors.Is() works:

go
package main import ( "errors" "fmt" ) func doSomething() error { return errors.New("Something went wrong") } func main() { err := doSomething() if errors.Is(err, errors.New("Something went wrong")) { fmt.Println("The error is exactly what we expected!") } else { fmt.Println("The error is not what we expected.") } }

In this example, we define a simple function doSomething() that returns an error with a custom message. In the main() function, we call this function and check if the returned error is the same as the one we expected using errors.Is().

Example 2: Comparing Errors of the Same Type

go
package main import ( "errors" "fmt" ) func doSomethingElse() (int, error) { return -1, errors.New("Invalid result") } func main() { result, err := doSomethingElse() if result == -1 { fmt.Println("Invalid result as expected.") } else { fmt.Println("Unexpected result.") } if errors.Is(err, errors.New("Invalid result")) { fmt.Println("The error is exactly what we expected!") } else { fmt.Println("The error is not what we expected.") } }

In this example, we define a function doSomethingElse() that returns an error along with an integer. We check if the integer returned is as expected and then use errors.Is() to compare the error with the one we expected.

Quiz Time! 🎯

Quick Quiz
Question 1 of 1

What does the `errors.Is()` function do in Go?

Wrapping Up 📝

By learning the errors.Is() function, you've gained a valuable tool for Go's error handling. Now, you can make your error checks more efficient and your code more robust. Keep exploring Go's error handling to master the art of error-free programming! 🎯

Happy coding! 💡💡💡