地址:https://tour.go-zh.org/methods/23code
package main import ( "io" "os" "strings" ) type rot13Reader struct { r io.Reader } func rot13(x byte) byte{ lower := x<='z'&&x>='a' upper := x<='Z'&&x>='A' if (!lower)&&(!upper){ return x } x += 13 if lower&&x>'z'{ return x-26 } if upper&&x>'Z'{ return x-26 } return x } func (rot *rot13Reader) Read(b []byte) (n int,e error){ n,e = rot.r.Read(b) for i:=0;i<n;i++{ b[i] = rot13(b[i]) } return n,e } func main() { s := strings.NewReader("Lbh penpxrq gur pbqr!") r := rot13Reader{s} io.Copy(os.Stdout, &r) }