Nomeação correta de pacotes para testes em Go (unit-testing)
Olá, colegas! Sou novo em Go e estou tentando entender como nomear corretamente os pacotes para testes. Tenho um projeto com a seguinte estrutura:
```
myapp/
├── internal/
│ ├── calculator/
│ │ ├── calc.go
│ │ └── calc_test.go
│ └── validator/
│ ├── valid.go
│ └── valid_test.go
├── cmd/
│ └── main.go
└── go.mod
```
Dentro de `calc.go`, declarei o pacote `package calculator`. Em `calc_test.go`, também escrevi `package calculator`, e os testes funcionam. Mas vi que alguns desenvolvedores usam `package calculator_test` para arquivos de teste. Qual é a diferença? Quando devo usar `_test` no nome do pacote e quando não?
Fico confuso porque, ao usar `package calculator_test`, não consigo acessar funções e variáveis não exportadas do pacote testado. Por exemplo, tenho uma função não exportada `addInternal()` em `calc.go` e quero testá-la. Se eu escrever `package calculator_test`, o Go emitirá um erro de compilação. Mas