Go语言学习笔记-A Tour of Go 练习笔记-rot13Reader
创始人
2024-03-08 02:08:05
0

Exercise: rot13Reader

练习题目:

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 compressed 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 an io.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.

练习程序:

package mainimport ("io""os""strings"
)type rot13Reader struct {r io.Reader
}func rot13(x byte) byte {switch {case x >= 65 && x <= 77:fallthroughcase x >= 97 && x <= 109:x = x + 13case x >= 78 && x <= 90:fallthroughcase x >= 110 && x <= 122:x = x - 13}return x
}func (rot rot13Reader) Read(a []byte) (int, error) {n, err := rot.r.Read(a)for key, value := range(a) {a[key] = rot13(value)}return n, err
}func main() {s := strings.NewReader("Lbh penpxrq gur pbqr!")r := rot13Reader{s}io.Copy(os.Stdout, &r)
}

运行结果:

You cracked the code!

学习笔记:

该题目是对于GO中Read方法的进阶练习,GO中常用的一种方式是用一个io.Reader去封装另一个io.Reader,这样可以实现很多功能,比如可以先通过里层的io.Reader从加密的文本中先读取加密字符,然后在外层的io.Reader的Read方法中实现解密并输出,这样就完成了一种直接读取解密文本的能力。本题目就是类似的场景,使用的加密算法是比较简单的ROT13字符替换加密法。

相关内容

热门资讯

耕秀才遇到兵打一成语 耕秀才遇到兵打一成语秀才遇到兵,有理说不清。你好。。。。 秀才遇到兵,有理说不清。。。。。谜底:蛮不...
女性的气质和优雅,都是如何培养... 女性的气质和优雅,都是如何培养的?腹有诗书气自华,多读书多有一些想法,确实会影响女性的气质,多注意一...
征求一些好听的青春励志流行歌曲... 征求一些好听的青春励志流行歌曲!杨培安的我相信,很励志哦励志一首就够了,何必这么复杂,酸酸甜甜就是我...
推荐几本专情的玄幻或武侠小说 推荐几本专情的玄幻或武侠小说(经典的言情也可以)东方血修 除了这个好像专情的还真不多斗罗大陆,寸芒...
有谁知道湖南台的宫锁心玉是哪部... 有谁知道湖南台的宫锁心玉是哪部小说改编的,去看清穿小说的鼻祖《步步惊心》吧。以那里的剧情为主题改编的...
入字拼音怎么拼写 入字拼音怎么拼写拼音: [rù] 入字共有2画,笔画顺序为: 撇、捺。● 入释斗带义:◎ 进,由外到...
“她拥有难以想象的强大力量”用... “她拥有难以想象的强大力量”用英语怎么翻译She has the hard-imagined str...
穿越四大无人区可可西里第八天里... 穿越四大无人区可可西里第八天里歌曲叫什么名字颠藏线过不了可可西里吧。。。。。可可西里在藏北,青海。颠...
帝王攻略广播剧是否完结? 帝王攻略广播剧是否完结?暂时没有,但是已经有了好几期,可以在b站上听
穿越到隋朝的小说 穿越到隋朝的小说主角穿越到一个大臣家名字有个天字最后他带着他的护卫风雨雷电穿越了拯救大唐妹妹隋主天下...
痛不欲生的意思 痛不欲生的意思形容非常痛苦
历史上到底有没有貂蝉啊?还有貂... 历史上到底有没有貂蝉啊?还有貂蝉喜欢谁貂蝉这个人存在的可能性不大,因为中国古代的小说和流行文本是文化...
求几句甜言蜜语?… 求几句甜言蜜语?…爱情和情歌一样,最高境界是余音袅袅。最凄美的不是报仇雪恨,而是遗憾。最好的爱情,必...
恋爱禁止的世界有第二季吗 恋爱禁止的世界有第二季吗这基本没有第2季了,动漫结局和漫画完全2个样子,我看作者是草草结束了,别想了...
夕上面加个横,右边一个撇横再加... 夕上面加个横,右边一个撇横再加个横折折折钩,再两个撇读什么 ?"殇"是这个字吧?shang殇(sha...
经常锻炼身体的人和不经常锻炼身... 经常锻炼身体的人和不经常锻炼身体的人有什么区别经常健身的:今年看着30岁 十年以后还是30岁;不经...
谁能帮我写首表白的藏头诗,对象... 谁能帮我写首表白的藏头诗,对象:卢雅楠雅曲勿轻弹,声声拨相思。楠船难载爱,情浓压水低。我情随风去,寻...
如何能避免造口业,佛教网 如何能避免造口业,佛教网不懂的不去评论 不说任何事物的是非!!身口业都是因为意业推动的,只要坚持修持...
有没有鸣人穿越海贼王世界的小说... 有没有鸣人穿越海贼王世界的小说?鸣人穿越在海贼王世界和路飞一起!现在要最少出上百章(篇)的小说!鸣人...
一陂春水浇花身,花影妖娆各占春... 一陂春水浇花身,花影妖娆各占春,纵被春风吹作血,绝胜南陌碾成尘,是谁的诗王安石的《北陂杏花》王安石 ...