Skip to content

Instantly share code, notes, and snippets.

@guoxingx
Created May 18, 2018 10:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guoxingx/ae9ffda76df6698d002fc8677adc4d0e to your computer and use it in GitHub Desktop.
Save guoxingx/ae9ffda76df6698d002fc8677adc4d0e to your computer and use it in GitHub Desktop.
A Tour of Go - Exercise: rot13Reader
package main
import (
"io"
"os"
"strings"
)
type rot13Reader struct {
r io.Reader
}
func (reader rot13Reader) Read (b []byte) (int, error) {
n, e := reader.r.Read(b)
for i, v := range(b) {
if v >= 'A' {
if v < 'A' + 26 {
b[i] = 'A' + (v - 'A' + 13) % 26
} else if v < 'a' + 26 {
b[i] = 'a' + (v - 'a' + 13) % 26
}
}
}
return n, e
}
func main() {
s := strings.NewReader("Lbh penpxrq gur pbqr!")
r := rot13Reader{s}
io.Copy(os.Stdout, &r)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment