```
package main
import (
"fmt"
"io"
"os"
)
func main() {
data, err := Readjj(os.Stdin, 3)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(data))
}
func Readjj(r io.Reader, num int) ([]byte, error) {
data := []byte{}
p := make([]byte, num)
for {
n, err := r.Read(p)
if err != nil && err != io.EOF {
return nil, err
} else if n == 0 {
break
} else {
data = append(data, p[:n]...)
}
}
return data, nil
}
```
运行
```
$ go run std.go
abcdef
```
输入内容后回车就卡那里不动了
如果我把代码中的os.stdin, 替换成 strings.NewReader("abcdef") ,可以执行成功,并打印
已解决
```
package main
import (
"fmt"
"io"
"os"
)
func main() {
data, err := Readjj(os.Stdin, 3)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(data))
}
func Readjj(r io.Reader, num int) ([]byte, error) {
data := []byte{}
p := make([]byte, num)
for {
n, err := r.Read(p)
if err != nil && err != io.EOF {
return nil, err
} else if n == 0 {
break
} else if n < num {
data = append(data, p[:n]...)
return data, nil
} else {
data = append(data, p[:n]...)
}
}
return data, nil
}
```
#7
更多评论