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字符替换加密法。

相关内容

热门资讯

计算机行业资金流入榜:华胜天成... 沪指5月14日上涨0.86%,申万所属行业中,今日上涨的有24个,涨幅居前的行业为非银金融、交通运输...
职教大家说丨窦铁成:扎根一线4... 原标题:职教大家说丨窦铁成:扎根一线40余年 把平凡工作做到极致中铁一局高级技师窦铁成以“工匠精神”...
互联网金融概念上涨2.17%,... 截至5月14日收盘,互联网金融概念上涨2.17%,位居概念板块涨幅第7,板块内,150股上涨,天利科...
网传全深圳都在绿化带捡龟背竹 ... 转自:微博沧州 【#网传全深圳都在绿化带捡龟背竹#[疑问...
超常布局国家急需学科专业面临的... ◎摘  要“超常布局急需学科专业”作为国家应对全球科技竞争白热化挑战的关键战略,要求从国家层面进行关...
夜间停车6元/次!哈市首批机关... “真是太方便了,价格还不高,晚上回家不用再四处找车位了。”近日,家住道里区友谊路附近的居民贺先生高兴...
ETF主力榜 | A500ET...        2025年5月14日,A500ETF基金(512050.SH)收涨0.84%,主力资金...
腾讯控股:2025年一季度微信... (转自:科创100ETF基金)腾讯控股港交所公告,2025年一季度微信及WeChat的合并月活账户1...
新时代高校党建与业务深度融合的... ◎摘  要  推动高校党建与高等教育事业发展深度融合,是办好中国特色社会主义大学的关键,对于推动高等...
新华社权威快报|七部门共同发力... 转自:新华社近日,科技部等7部门联合发布《加快构建科技金融体制 有力支撑高水平科技自立自强的若干政策...
井松智能(688251.SH)... 格隆汇5月14日丨井松智能(688251.SH)在互动平台表示,公司高度关注智能机器人领域的技术发展...
2025年中国铱行业市场规模、... (转自:华经产业研究院)铱在电子、化工和电化学等领域的广泛应用是市场增长的主要驱动力。例如,铱在电解...
军信股份启动H股上市筹备 5月14日,军信股份(301109)发布公告,董事会授权启动境外发行股份(H股)并在香港联合交易所上...
ETF主力榜 | 酒ETF(5...        2025年5月14日,酒ETF(512690.SH)收涨1.49%,主力资金(单笔成交...
杭州银行:加大股东回报,持续提... 投资者提问:公司对于股东的投资回报有什么规划,公司的派送居于上市公司的吊车尾,能不能提高对分红比例,...
微软将裁员6000人,降本以押... 当地时间5月13日,微软宣布将裁员3%,影响约6000 人,裁员范围覆盖各个级别、团队和地区。微软发...
政策利好+需求增长 深市电子行... 近年来,得益于国家集成电路产业投资基金的支持、新基建战略的推进等政策利好,以及全球智能化浪潮带来的庞...
川投能源:拟按持股比例向雅砻江... 川投能源5月14日公告,公司拟按持股比例向雅砻江流域水电开发有限公司(简称“雅砻江公司”)增资16....
川投能源(600674.SH)... 格隆汇5月14日丨川投能源(600674.SH)公布,为推进项目建设,保障项目建设资金要求,公司拟按...