Back to list

Symbol-based visibility causes variable shadowing and naming conflicts

5/10 Medium

Go's reliance on symbol case for visibility (uppercase=public, lowercase=private) creates unintended variable shadowing. Developers cannot use natural names like 'user' for a user variable because it shadows the user type, forcing awkward one-letter naming conventions.

Category
language
Workaround
hack
Stage
build
Freshness
persistent
Scope
language
Upstream
wontfix
Recurring
Yes

Sources

Collection History

Query: “What are the most common pain points with Go for developers in 2025?3/29/2026

In most cases, your coding scopes deal with one user instance, so naming it user should be a clear and reasonable choice. However, in Go, whenever you store a private type into a private variable or a public type into a public variable — you run into this. So you simply start naming your user variables u.

Created: 3/29/2026Updated: 3/29/2026