我有大约8000000个UTF-8字符的字符串。扫描fmt.Scanf()大约需要10秒钟,如何才能更快地完成扫描?我有一个用于Cscanf()函数的Go包装器,它是由我的老师写的,作为Go的fmt.Scanf()中某些错误的解决方法,它可以在1-2秒内起作用,但是我不喜欢将辅助包装用于这样的简单任务。您能建议一种更快的方式来读取纯Go中的字符串吗?
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
找到了解决方案。bufio工作得更快(因为它被缓冲了,而fmt函数没有,并且它不解析任何内容):
reader := bufio.NewReader(os.Stdin)
str, _ := reader.ReadString('\n') // Like fmt.Scanf("%s", &str), but faster
var x, y rune
fmt.Fscanf(reader, "%c %c", &x, &y) // I need to read something else
// (see comments for the question)
// It's easy, as I can use fmt.Fscanf
...甚至比那个Cscanf()包装器还快。
- 1 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消