The folks over at changelog have made a quite nice podcast episode about it on gotime: https://changelog.com/gotime/278
I found the conversation to be quite insightful.
Apparently this repo is NOT any sort of standard, yet a lot of people are fooled to believe that based on the repo’s account name and the project’s name. I see this mentioned whenever this is asked… just an FYI…
Some aspects of that repo are actually language features, such as the pkg and internal directories.
pkg/
isn’t a language feature. It’s just a popular convention that used to be used in the Go standard library.The language feature is the
internal/
directory, and it’s function of restricting dependencies from external programs.That is correct,
internal/
is a feature. I was just clarifying that thepkg/
folder isn’t any sort of language feature as you had said it was.
Not quite what you’re looking for, but Google does have an official style guide which may be slightly helpful
I often point to Upspin as it’s a real-world Go project by folks closely related to the Go project (including Rob Pike).