Aller au contenu

Rot13 Reader

Un utilisation courante d’un io.Reader et d’enveloper autre io.Reader, et qui modifie le flux d’une certaine manière.

Par exemple, la fonction gzip.NewReader prend un io.Reader (un flux de données compressées) en paramètre et retourne un *gzip.Reader qui implémente également un io.Reader (un flux de données décompressées).

Implémentez rot13Reader qui implémente io.Reader et lit à partir d’un io.Reader, modifiant le flux en appliquant le chiffrement de substitution rot13 à tous les caractères alphabétiques.

Le type rot13Reader est déjà donné dans le code ci-dessous. Faites-en un io.Reader en implémentant sa méthode Read.

package main

import (
    "io"
    "os"
    "strings"
)

type rot13Reader struct {
    r io.Reader
}

func main() {
    s := strings.NewReader("Lbh penpxrq gur pbqr!")
    r := rot13Reader{s}
    io.Copy(os.Stdout, &r)
}