猿问

大UTF-8字符串的快速fmt.Scanf()

我有大约8000000个UTF-8字符的字符串。扫描fmt.Scanf()大约需要10秒钟,如何才能更快地完成扫描?我有一个用于Cscanf()函数的Go包装器,它是由我的老师写的,作为Go的fmt.Scanf()中某些错误的解决方法,它可以在1-2秒内起作用,但是我不喜欢将辅助包装用于这样的简单任务。您能建议一种更快的方式来读取纯Go中的字符串吗?


慕妹3242003
浏览 215回答 1
1回答

慕无忌1623718

找到了解决方案。bufio工作得更快(因为它被缓冲了,而fmt函数没有,并且它不解析任何内容):reader := bufio.NewReader(os.Stdin)str, _ := reader.ReadString('\n')   // Like fmt.Scanf("%s", &str), but fastervar x, y runefmt.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()包装器还快。
随时随地看视频慕课网APP

相关分类

Go
我要回答