Convenções de nomenclatura de constantes em Go: CamelCase, ALL_CAPS ou algo mais?
Olá a todos! Comecei a estudar Go recentemente, depois de Python e C#, e fico um pouco confuso com as convenções de nomenclatura de constantes.
Em Python, geralmente usamos `ALL_CAPS` para constantes: `MAX_CONNECTIONS = 100`. Em C#, é comum usar `PascalCase`. Já em Go, vejo códigos diferentes em projetos diferentes.
Por exemplo, na biblioteca padrão do Go, encontrei exemplos como:
```go
// No pacote http
const (
MethodGet = "GET"
MethodPost = "POST"
)
// No pacote os
const (
O_RDONLY = 0x0
O_WRONLY = 0x1
)
```
O primeiro exemplo usa CamelCase (`MethodGet`), e o segundo usa snake_case com letras maiúsculas (`O_RDONLY`). Quando perguntei a um colega, ele disse que em Go deve-se usar `CamelCase` para constantes exportadas e `lowerCamelCase` para constantes não exportadas. Mas então por que em `os` usa-se `O_RDONLY`? É uma constante exportada!
Escrevi meu código assim:
```go
package config
const MAX_RETRIES = 3
const DEFAULT_TIMEOUT_SECONDS = 30
const DATABASE_URL = "localhost:5432"
```
Mas o linter reclam