• [^] # Re: gestion des erreurs

    Posté par (site web personnel) . En réponse à la dépêche Retour d'expérience sur Go. Évalué à 1.

    (Désolé si ma définition n'est pas très rigoureuse). C'est une routine pour laquelle l'environnement va sauvegarder le contexte d’exécution entre chacun de ses appels, ce qui fait que d'un appel à l'autre l’exécution de cette routine se fait de manière continue. Bon je vais éclaircir avec un exemple en Python.

    Si j'écris une fonction de ce style :

    def foo():
     return 1
     return 2
     return 3
    
    

    Tu vois bien que ce code est stupide : il va retourner '1' à chaque appel, et les 2 autres 'return' sont inutiles. En revanche si j'écris :

    def foo():
     yield 1
     yield 2
     yield 3
    
    

    Grace à 'yield', Python va me générer tout seul une classe d'itérateur qui utilise mon code pour générer les valeurs successives. Je peux alors faire ça :

    it = foo()
    print it.next() # '1'
    print it.next() # '2'
    
    

    Ça aurait été faisable à la main évidemment, mais là c'est beaucoup plus court et simple. Ça permet rapidement de faire des choses complexes sans trop de se prendre la tête.

    J'ai l'impression que les goroutines de Go justement permettent de faire des continuations (et c'est bien).