Maison >développement back-end >Golang >Pourquoi utiliser des pointeurs et des variables avec WaitGroup de Go ?
Référence WaitGroup : Utilisation de pointeurs et de variables
Le WaitGroup dans Go fournit des primitives de synchronisation pour coordonner les goroutines. Il a trois fonctions principales : Ajouter, Terminé et Attendre. Ici, nous examinerons leur utilisation et pourquoi elles peuvent être appelées à l'aide de pointeurs et de variables.
Méthodes WaitGroup
Comme mentionné, toutes les fonctions WaitGroup sont appelées par un pointeur vers un WaitGroup, désigné par le type de récepteur *WaitGroup. Cela leur permet de modifier l'état interne du WaitGroup, de suivre l'achèvement des goroutines et d'attendre qu'ils terminent.
Comprendre l'utilisation
L'extrait de code en question montre les deux pointeurs et utilisation des variables pour les fonctions WaitGroup :
func main() { // Declared as a variable var wg sync.WaitGroup // Called with a pointer to the WaitGroup wg.Add(1) // Called with a variable (not a pointer) go worker(i, wg) }
Passer un pointeur vers le Worker
Lorsque vous transmettez le WaitGroup à la goroutine du travailleur, il est crucial de transmettre son adresse en utilisant &. En effet, la fonction Done du travailleur opère sur le pointeur WaitGroup et le transmettre directement en tant que variable créerait une copie, entraînant un comportement inattendu.
Conclusion
Dans En résumé, toutes les méthodes WaitGroup sont conçues pour être appelées avec un récepteur pointeur. Les variables sont utilisées dans l'extrait de code pour simplifier la déclaration et l'appel de fonction. Cependant, lors du passage du WaitGroup aux goroutines, il est essentiel de transmettre son adresse (&) pour s'assurer que toutes les méthodes fonctionnent sur le même pointeur sous-jacent.
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!