5 things I dislike about Golang

Thursday, the 11th of June 2026

Weird things I learnt are a part of Golang:

Package imports

They use a github.com prefix, for some reason. For ALL Files

internal/ package

Any package in a module called internal can't be exported? Essentially this is public/private but with private being explicit instead of implicit?

err == nil

I know this has been beaten to death but why is a nil value = an error???

Package-scoped variables

I feel like this is insane - I can define initCmdName in init.go and use it in root.go????

Visiblity through title case

Variables and functions are exported by uppercasing their first character. ???????????