• [^] # Re: Trou de mémoire

    Posté par (site web personnel, Mastodon) . En réponse au lien Go 1.18 Beta : la généricité enfin !. Évalué à 2.

    Dans ton exemple f et v ne sont pas capturés puisqu'ils sont passés en paramètres.
    Les méthodes c'est exactement comme si on écrivait Abs(f MyFloat)

    // une interface 
    type Rendu interface {
     Rendu(i, j int) string
    }

    Oui, c'est exactement ce que je décrit, une interface qui utilise une fonction de fermeture. Ce qui est capturé c'est le tableau.
    L'algo n'a pas à traiter le tableau, il va juste appeler les cellules par leur index.

    Ceci à la place d'une interface, beaucoup plus classique qui serait :

    type Rendu interface {
     Rendu() string
    }
    // mon algo
    for c in range cellules {
     c.Rendu()
    }

    En Python je redéfinissais la méthode Rendu de ma cellule et cette méthode accédait aux cellules voisines par quelque chose comme self.parent.cellules[i-1]...

    En Go je pourrai avoir une interface pour récupérer les cellules voisines

    type Rendu interface {
     Rendu() string
     Voisines() []Rendu
    }

    Mais du coup je perdrais mon type de cellule... C'est là qu'avec des casts ou du generique ce serait faisable mais au final beaucoup plus compliqué.