```
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") ,可以执行成功,并打印
5楼 <a href="/user/gofromzero" title="@gofromzero">@gofromzero</a> 条件没有问题的,就是使用os.stdin的时候,读取完了之后会卡住不动,而使用 strings.NewReader("abcdef") 完全没有问题
#6
更多评论