例如
f,err := os.Open(path) if err != nil { return 0,err } defer f.Close() // Splits on newlines by default. scAnner := bufio.NewScAnner(f) line := 1 // https://golang.org/pkg/bufio/#ScAnner.Scan for scAnner.Scan() { if Strings.Contains(scAnner.Text(),"yourString") { return line,nil } line++ } if err := scAnner.Err(); err != nil { // Handle the error }
更新:如果您需要在“数千个文件”中执行此操作(根据另一个答案的注释),那么您可以将此方法包装在worker pool中并同时运行.