Menu Close

Cause function in context package in Go

Here, we will are going to learn about cause function in context package in Go with deep understanding and example in details.

The Cause function in context package in Go is not a built-in function in the context package in Go. However, it is a common pattern in error handling, usually found in external error handling libraries like ‘’. The Cause function allows you to retrieve the root cause of an error, which is useful when you have a chain of wrapped errors.

In the context package, errors might be wrapped using the context.WithValue method to carry additional information throughout the request lifetime. To extract the root cause, you can use a custom Cause function to unwrap the errors and reach the original error value.


Let’s dive into a detailed example to understand how the Cause function works. First, let’s create a simple error chain using the errors package:

package main

import (





type customError struct {

	ctx  context.Context

	cause error


func (e *customError) Error() string {

	return e.cause.Error()


func wrapError(ctx context.Context, err error) error {

	return &customError{ctx: ctx, cause: err}


func Cause(err error) error {

	for {

		ce, ok := err.(*customError)

		if !ok {



		err = ce.cause


	return err


func main() {

	ctx := context.Background()

	originalError := errors.New("This is the root cause.")

	wrappedError := wrapError(ctx, originalError)

	fmt.Println("Wrapped error:", wrappedError)

	fmt.Println("Root cause:", Cause(wrappedError))



Wrapped error: This is the root cause.
Root cause: This is the root cause.

To learn more about golang, Please refer given below link.


Posted in context, golang, packages

Leave a Reply

Your email address will not be published. Required fields are marked *