# A Go example
You'll need `go` 1.23 at least.
There's a [`Makefile`](Makefile), so you can do:
$ make clean
$ make test
$ make
$ make run
If you run:
go install golang.org/x/tools/cmd/goimports@latest
go install github.com/daixiang0/gci@latest
go install mvdan.cc/gofumpt@latest
then you can do `make fmt` to format all the source files.
If you `go install
github.com/golangci/golangci-lint/cmd/golangci-lint@latest`, you can
also do `make lint` to get a linting / critique of all the source
files (`lint` runs `fmt` first, so you need to have installed the
packages above as well).
Note that the `Makefile` is *for development*, it's not used after the
code is built.
## Structure
* the entry points go under `cmd/`, with a matching target in the
`Makefile`
* the `factory` constructs all the singletons that actually do things
(e.g. listeners, models, clients, business logic objects)
* the `config` handles all configuration for the entire application