fatcontext/README.md
2024-03-27 19:53:02 +01:00

523 B

foreshadow

foreshadow is a Go linter which detects un-shadowed contexts in loops. They can lead to performance issues, as documented here: https://gabnotes.org/fat-contexts/

Example

package main

import "context"

func ok() {
	ctx := context.Background()

	for i := 0; i < 10; i++ {
		ctx := context.WithValue(ctx, "key", i)
		_ = ctx
	}
}

func notOk() {
	ctx := context.Background()

	for i := 0; i < 10; i++ {
		ctx = context.WithValue(ctx, "key", i) // "context not shadowed in loop"
		_ = ctx
	}
}