Avatar ·

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