Como adicionar número de versão e hash de commit em uma aplicação Go durante a compilação?
Olá a todos! Estou escrevendo uma pequena aplicação web em Go e quero que, ao iniciar, ela exiba sua versão. Atualmente, eu mudo manualmente uma constante no código:
```go
const Version = "1.0.3"
```
Mas isso é terrivelmente inconveniente. A cada commit, tenho que mexer no código, alterar a string e commitar separadamente. Além disso, gostaria de ver não apenas o número da versão, mas também o hash do commit e a data da compilação — para saber exatamente qual build está rodando no servidor.
Tentei ler arquivos, mas isso não funciona se o binário for movido para outra máquina. Ouvi falar sobre ldflags, mas não consigo entender como usá-los corretamente.
Me digam como é feito o versionamento em projetos Go? Como passar a versão, o hash do commit e a data da compilação para o binário durante a compilação, para que funcione sem gambiarras? E para que ao executar `./myapp version` ou `./myapp --version` seja exibida a informação completa.
Ficarei grato por um exemplo de Makefile ou script de build que faça isso automaticamente no CI/CD.
<<>>