errors.Is checks whether a wrapped error chain contains a specific sentinel.

Errors Is

errors_is.go
package main

import (
	"errors"
	"fmt"
)

var ErrMissing = errors.New("missing record")

func lookup(key string) error {
	if key == "missing" {
		return fmt.Errorf("lookup %s: %w", key, ErrMissing)
	}
	return nil
}

func main() {
	var key = 
	err := lookup(key)
	errText := "none"
	if err != nil {
		errText = err.Error()
	}
	isMissing := errors.Is(err, ErrMissing)

	fmt.Println("key=", key)
	fmt.Println("err=", errText)
	fmt.Println("is_missing=", isMissing)
}
package main

import (
	"errors"
	"fmt"
)

var ErrMissing = errors.New("missing record")

func lookup(key string) error {
	if key == "missing" {
		return fmt.Errorf("lookup %s: %w", key, ErrMissing)
	}
	return nil
}

func main() {
	var key = 
	err := lookup(key)
	errText := "none"
	if err != nil {
		errText = err.Error()
	}
	isMissing := errors.Is(err, ErrMissing)

	fmt.Println("key=", key)
	fmt.Println("err=", errText)
	fmt.Println("is_missing=", isMissing)
}
errors is Use `errors.Is` when callers need to ask whether a known error occurred under extra context.