Comment créer correctement des constructeurs en Go si le langage n'a ni classes ni constructeurs ?
Bonjour à tous ! Je viens de commencer à étudier Go après Python et Java, et je suis sérieusement bloqué. En Go, il n'y a pas de classes au sens habituel et pas de constructeurs. Comment alors créer des objets avec une logique d'initialisation complexe ?
Supposons que je veuille créer une structure `User` avec les champs `Name`, `Email` et `Age`. Idéalement, je veux que lors de la création de l'utilisateur, l'email soit vérifié pour sa validité, l'âge ne puisse pas être négatif, et le nom ne soit pas vide. En Python, j'écrirais `__init__`, en Java un constructeur avec des vérifications. Comment faire cela en Go ?
Pour l'instant, je fais ainsi :
```go
type User struct {
Name string
Email string
Age int
}
func main() {
u := User{
Name: "Alice",
Email: "alice@example.com",
Age: 30,
}
// Mais il n'y a pas de vérifications ici ! On peut créer un User avec un nom vide ou un âge de -5.
fmt.Println(u)
}
```
Je comprends qu'en Go on peut simplement déclarer une structure et remplir les champs, mais ce n'est pas sûr. Il faut une fonction qui garantisse