This template can be used when creating a new Golang repository. Choose it when
you create a repository in GitHub web interface. Or use --template
flag when
staring gh repo create
command.
Directory structure is inspired by https://github.com/golang-standards/project-layout.
- Review all files if you haven't done so before.
- Remove examples and all READMEs (this one needs to be rewritten).
- Change 'example' and 'go-template' names everywhere, specifically in workflows.
/cmd
should not contain a lot of code, most of the code is in packages.
https://github.com/golang-standards/project-layout propose to have the code
in /pkg
and /internal
. But it's ok to have it in /yourpkg
if you have few
packages. Do not name packages like pkg/api-db
, do this pkg/api/db
instead.
/pkg
is for packages that can be used externally. Unless you have a big
project use /pkg
for all packages.
/internal
is for internal packages, not intended for external usage, but
use it if you really need to fine tune what can be imported from outside.