Struct anonyme et Struct vide
Dans Go, une structure anonyme est une structure qui n'a pas de nom. Il est généralement utilisé pour créer des structures de données temporaires ou de courte durée. Une structure vide n'a pas de champs et occupe zéro octet de mémoire.
[1ère question]
Le code suivant utilise une structure anonyme pour signaler qu'un guerrier a fini de se battre :
done := make(chan struct{})
Le type struct{} représente une structure vide. Il est utilisé ici car nous n'avons pas besoin de stocker de données dans la structure. Nous voulons uniquement l'utiliser pour signaler qu'un guerrier a fini de se battre.
La ligne suivante envoie la structure vide au canal done :
done <- struct{}{}
Les crochets supplémentaires sont nécessaires car le < ; et > les opérateurs ont une priorité inférieure à l’opérateur <-. Sans les crochets, le code serait interprété comme done <- (struct{}) {}, ce qui enverrait un pointeur vers une structure vide au lieu d'une structure vide elle-même.
[2e question ]
La ligne suivante attend que tous les guerriers aient fini de se battre :
for _ = range langs { <-done }
Cette ligne utilise une expression de portée pour recevoir du canal terminé. Le caractère _ est utilisé comme variable d'espace réservé pour indiquer que nous ne nous soucions pas de la valeur reçue. En effet, la structure vide envoyée par les guerriers ne contient aucune donnée.
L'expression range est nécessaire car elle permet au programme d'attendre que tous les guerriers aient fini de se battre avant de continuer. Sans cela, le programme n'attendrait que que le premier guerrier ait fini de combattre avant de continuer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!