Fundamentals 2 min read

Understanding Variable Shadowing in Go and Detecting It with golangci-lint

The article explains how Go's short variable declaration (:=) can cause variable shadowing across scopes, demonstrates the effect with a sample program, and recommends using the golangci-lint static analysis tool to automatically detect such hidden bugs.

Cognitive Technology Team
Cognitive Technology Team
Cognitive Technology Team
Understanding Variable Shadowing in Go and Detecting It with golangci-lint

Go offers a short variable declaration using the := operator, which can lead to variable shadowing when the same name is reused in different scopes.

Consider the following example (the program prints the numbers 10, 100, 1000, 100, 10):

10
100
1000
100
10

When a variable with the same name is declared inside a block, it hides the outer variable, causing the inner block to operate on a different value.

To automatically detect such shadowing bugs, the static analysis tool golangci-lint can be used, which reports instances where := creates a new variable that shadows an existing one.

In summary, while Go’s short declaration is convenient, developers should be aware of the shadowing pitfall and employ tools like golangci-lint to ensure code correctness.

programmingGoStatic Analysisfundamentalsgolangci-lintvariable-shadowing
Cognitive Technology Team
Written by

Cognitive Technology Team

Cognitive Technology Team regularly delivers the latest IT news, original content, programming tutorials and experience sharing, with daily perks awaiting you.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.