Como criar construtores corretamente em Go, se a linguagem não tem classes e construtores?
Olá a todos! Comecei a estudar Go depois de Python e Java, e fiquei muito travado. Go não tem classes no sentido tradicional e não tem construtores. Como então criar objetos com lógica de inicialização complexa?
Digamos que eu queira criar uma struct `User` com os campos `Name`, `Email` e `Age`. Idealmente, quero que, ao criar um usuário, o email seja validado, a idade não seja negativa e o nome não esteja vazio. Em Python, eu escreveria `__init__`, em Java, um construtor com verificações. Como fazer isso em Go?
Por enquanto, faço assim:
```go
type User struct {
Name string
Email string
Age int
}
func main() {
u := User{
Name: "Alice",
Email: "alice@example.com",
Age: 30,
}
// Mas aqui não há verificações! É possível criar um User com nome vazio ou idade -5.
fmt.Println(u)
}
```
Entendo que em Go posso simplesmente declarar uma struct e preencher os campos, mas isso não é seguro. Preciso de alguma função que garanta