Question

Je lis toujours la chose horrible « goto » est. Mais aujourd'hui, la lecture de la programmation Google rel="nofollow langue Go , je vois que suports Coroutines qu'il (goroutines).

La question est:

Coroutine == GoTo 

ou

Coroutine != GoTo?

Pourquoi?

Était-ce utile?

La solution

goroutines ne sont pas les mêmes que GOTO - ils courent en parallèle avec le code principal. Lorsque vous dites quelque chose comme (par exemple de leur http://golang.org/doc/effective_go.html)

go list.Sort();  // run list.Sort in parallel; don't wait for it. 

le code de la canalisation principale se poursuit - il n'attend pas le genre à la fin. La routine de tri commence sur son propre fil d'exécution léger et quand il se termine le genre que les sorties de fil.

Un goto causerait le code ligne principale à la branche à un chemin d'exécution séparée -. De sorte que les déclarations après la goto ne jamais courir

Autres conseils

La principale différence est que les déclarations de goto dans les langues qui les soutiennent permettent de sauter à un emplacement dans le programme avec peu ou aucune restriction. Alors que coroutines peut à la surface semblent similaires, ils sont très différents.

Coroutines permettent des procédures à suspendre (avec tout leur contexte) et repris à certains endroits . Ainsi, alors que coroutines ne pause et le contrôle de yield à d'autres procédures avant de compléter, puis reprendre plus tard, les points où les procédures donnent et reprennent à partir est connue à l'avance.

Il est impossible de simplement sauter à une ligne arbitraire dans une procédure, la procédure en question doit attendre d'être repris à un endroit précis. Bien que ce passage de contrôle est beaucoup plus structuré qu'avec goto il est possible d'écrire du code source de confusion par l'utilisation excessive de ce mécanisme puissant. Là encore c'est-ce pas le cas avec toutes les fonctionnalités de langage de programmation puissant? ; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top