码迷,mamicode.com
首页 > 其他好文 > 详细

Exercise: Rot13 Reader

时间:2014-10-29 01:39:56      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   for   sp   

package main

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

type rot13Reader struct {
    r io.Reader
}
func (rot13 rot13Reader)Read(p []byte) (n int, err error){
    n,err = rot13.r.Read(p)
    for i := 0; i < len(p); i++ {
        if (p[i] >= A && p[i] < N) || (p[i] >=a && p[i] < n) {
            p[i] += 13
        } else if (p[i] > M && p[i] <= Z) || (p[i] > m && p[i] <= z){
            p[i] -= 13
        }
    }
    return
}
func main() {
    s := strings.NewReader(
        "Lbh penpxrq gur pbqr!")
    r := rot13Reader{s}
    fmt.Println(r)
    io.Copy(os.Stdout, &r)
}

go官方教程的答案地址https://gist.github.com/zyxar/2317744

A common pattern is an io.Reader that wraps another io.Reader, modifying the stream in some way.

For example, the gzip.NewReader function takes an io.Reader (a stream of gzipped data) and returns a *gzip.Reader that also implements io.Reader (a stream of the decompressed data).

Implement a rot13Reader that implements io.Reader and reads from anio.Reader, modifying the stream by applying the ROT13 substitution cipher to all alphabetical characters.

The rot13Reader type is provided for you. Make it an io.Reader by implementing its Read method.

Exercise: Rot13 Reader

标签:style   blog   http   io   color   os   ar   for   sp   

原文地址:http://www.cnblogs.com/ghgyj/p/4058280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!