我試圖io.Reader在Go中實(shí)現(xiàn)一個(gè)非?,嵥榈氖虑椋簆ackage mainimport ( "io" "os" "strings")type rot13Reader struct { r io.Reader}// Very trivial function I implemented.func (r *rot13Reader) Read(p []byte) (int, error) { return 5, nil // Return some trivial values for now.}func main() { s := strings.NewReader( "Lbh penpxrq gur pbqr!") r := rot13Reader{s} io.Copy(os.Stdout, &r)}最后,我想rot13Reader將ROT13應(yīng)用于它正在讀取的字符串,但是現(xiàn)在,我只是試圖創(chuàng)建一個(gè)io.Reader與適當(dāng)接口匹配的瑣碎東西。當(dāng)我運(yùn)行該程序時(shí),它永遠(yuǎn)不會(huì)停止。為什么?我在哪里有無限循環(huán)?更新:我嘗試data通過下面的for循環(huán)更改接頭,但實(shí)際上似乎并沒有更改接頭。我需要以某種方式復(fù)制data嗎?package mainimport ( "io" "os" "strings")type rot13Reader struct { r io.Reader}func (r *rot13Reader) Read(data []byte) (int, error) { bytesRead, err := r.r.Read(data) // Try to alter data... only without this for loop, text prints in standard output... odd. for i := 0; i < bytesRead; i++ { data[i] += 13 } return bytesRead, err}func main() { s := strings.NewReader( "Lbh penpxrq gur pbqr!") r := rot13Reader{s} io.Copy(os.Stdout, &r)}
- 1 回答
- 0 關(guān)注
- 192 瀏覽
添加回答
舉報(bào)
0/150
提交
取消