我有大約8000000個UTF-8字符的字符串。掃描fmt.Scanf()大約需要10秒鐘,如何才能更快地完成掃描?我有一個用于Cscanf()函數(shù)的Go包裝器,它是由我的老師寫的,作為Go的fmt.Scanf()中某些錯誤的解決方法,它可以在1-2秒內(nèi)起作用,但是我不喜歡將輔助包裝用于這樣的簡單任務(wù)。您能建議一種更快的方式來讀取純Go中的字符串嗎?
1 回答

慕無忌1623718
TA貢獻1744條經(jīng)驗 獲得超4個贊
找到了解決方案。bufio工作得更快(因為它被緩沖了,而fmt函數(shù)沒有,并且它不解析任何內(nèi)容):
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 關(guān)注
- 248 瀏覽
添加回答
舉報
0/150
提交
取消