从Go中的标准输入读取时,建议允许超过1024个字符的方法是什么?
例如,此代码使用bufio.Scanner的最大输入长度为1024.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
input := scanner.Text()
fmt.Println(input)
}
Run Code Online (Sandbox Code Playgroud)
一些建议的答案后更新......对不起的家伙 - 我仍然必须做错事,或者错误地提出问题.我尝试了两个建议,但仍然看到同样的问题.以下是代码的更新版本.症状是扫描仪在第1024个字符后不接受输入.例如,尝试运行它然后粘贴一个长度为1025个字符的字符串,并且它将在字符1024之后停止接受输入.
package main
import (
"bufio"
"bytes"
"fmt"
"log"
"os"
)
func main() {
var buffer bytes.Buffer
scanner := bufio.NewScanner(os.Stdin)
for {
done := scanner.Scan()
buffer.WriteString(scanner.Text())
if done == true {
if scanner.Err() != nil {
log.Fatal("Error scanning input")
}
break
}
}
fmt.Println(buffer.String())
}
Run Code Online (Sandbox Code Playgroud)
您忽略返回值的scanner.Scan()这是一个bool表明您是否走到了尽头.
特别:
扫描停止时返回false,或者到达输入结束或出错.在Scan返回false之后,Err方法将返回扫描期间发生的任何错误,除非它是io.EOF,Err将返回nil.
所以你需要继续scanner.Scan()在循环中运行,直到它返回false,然后检查.Err()以确保你没有因为非EOF错误而停止扫描.
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |