Remoção de campos de uma struct ou sua ocultação na resposta JSON em Go
Olá a todos! Sou novo em Go e me deparei com o seguinte problema. Tenho uma struct User que é usada para armazenar dados do usuário no banco de dados e para enviar respostas JSON via REST API.
```go
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
Role string `json:"role"`
}
```
Quando retorno o usuário em JSON (por exemplo, após o registro), não quero enviar o campo Password e, possivelmente, o campo Role (para usuários comuns). Mas não quero criar structs separadas para cada caso — isso leva à duplicação de código.
Tentei usar `json:"-"` para o campo Password, mas assim ele nunca será incluído no JSON, e preciso que ele esteja na resposta em alguns cenários (por exemplo, para o admin). Também tentei deixar os campos como strings vazias ou zeros, mas no JSON eles ainda aparecem.
Como ocultar ou remover campos corretamente?