
golang 快速读取大文件
//github.com/bits-and-blooms/bloom/v3
package main
import (
"bufio"
"fmt"
"os"
"sync"
)
func processLine(line string, wg *sync.WaitGroup) {
defer wg.Done()
// 处理每一行,例如打印
fmt.Println(line)
}
func main() {
file, err := os.Open("largefile.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
var wg sync.WaitGroup
for scanner.Scan() {
wg.Add(1)
go processLine(scanner.Text(), &wg) // 使用 Goroutine 处理每一行
}
if err := scanner.Err(); err != nil {
fmt.Println("Error reading file:", err)
}
wg.Wait() // 等待所有 Goroutine 完成
}