Como verificar se uma struct está vazia em Go? (struct vazia, comparação com nil)
Olá a todos! Comecei a estudar Go recentemente e me deparei com um problema. Tenho uma struct que é retornada de uma função. Às vezes ela está vazia (todos os campos são valores zero), e às vezes está preenchida. Preciso verificar se ela está vazia para não processá-la.
Em outras linguagens, estou acostumado a verificar com `null` ou `None`. Em Go, tentei comparar com `nil`:
```go
type User struct {
Name string
Age int
}
func getUser() User {
// ... alguma lógica
return User{}
}
u := getUser()
if u == nil {
fmt.Println("vazio")
}
```
Mas o compilador reclama: `cannot convert nil to type User`. Entendi que structs não são ponteiros, e `nil` não se aplica a elas. Então tentei comparar com uma struct vazia:
```go
if u == User{} {
fmt.Println("vazio")
}
```
Mas isso também não funciona se a struct tiver campos do tipo slice ou map, porque eles não podem ser comparados com `==`. Como verificar corretamente e de forma idiomática se uma struct está vazia em Go? Talvez exista