[A Tour of Go] Exercise: rot13Reader

newbieski·2023년 4월 10일

golang

목록 보기
2/13

https://go.dev/tour/methods/23

package main

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

type rot13Reader struct {
	r io.Reader
}
func (r rot13Reader)Read(b[] byte) (int, error) {
    len, e := r.r.Read(b)
	for i, c := range b {
		if 'a' <= c && c <= 'z' {
			c = (c - 'a' + 13) % 26 + 'a'
		} else if 'A' <= c && c <= 'Z' {
			c = (c - 'A' + 13) % 26 + 'A'
		}
		b[i] = c
	}
	return len, e
}

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

0개의 댓글