第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用等待組遍歷文件夾

無法使用等待組遍歷文件夾

Go
吃雞游戲 2022-05-23 17:20:14
我有這個簡單的腳本來嘗試遍歷文件系統(tǒng)并逐行讀取文件以匹配正則表達式上的行:package mainimport (  "bufio"  "fmt"  "io/ioutil"  "log"  "os"  "regexp"  "sync")type FileWithLine struct{  Line int  Path string}var set = map[string]FileWithLine{}var rgx = regexp.MustCompile("ErrId\\s*:\\s*\"[[:alnum:]]+\"");func traverseDir(d string, wg *sync.WaitGroup){  fmt.Println("traversing dir:", d)  if d == ".git"{    return  }  wg.Add(1)  go func(wg *sync.WaitGroup){    defer wg.Done()    files, err := ioutil.ReadDir(d)    if err != nil {      log.Fatal(err)    }    for _, f := range files {      fmt.Println("we see file:", f.Name())      if f.IsDir() {       traverseDir(f.Name(), wg)       return      }      file, err := os.Open(f.Name())      if err != nil {       log.Fatalf("failed opening file: %s", err)      }      scanner := bufio.NewScanner(file)      scanner.Split(bufio.ScanLines)      for scanner.Scan() {      var line = scanner.Text()      if rgx.MatchString(line) {        fmt.Println("line matches:", line);      }      }      file.Close()    }  }(wg)}func main()  {  var wg sync.WaitGroup  traverseDir(".", &wg)  fmt.Println("Main: Waiting for workers to finish")  wg.Wait()  fmt.Println("Main: Completed")}問題是它在讀取所有文件之前就退出了,我得到了這個輸出:traversing dir: .Main: Waiting for workers to finishwe see file: .gittraversing dir: .gitMain: Completed但是當前目錄中有更多文件,而不僅僅是 .git 文件夾。碰巧 .git 文件夾是當前工作目錄中的第一項,然后立即退出。有人知道為什么我的程序很早就令人興奮嗎?
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

由于以下幾行,它正在停止處理:


if f.IsDir() {

   traverseDir(f.Name(), wg)

   return

}

當它看到一個目錄時,它會進入并立即返回,而不處理當前目錄中的剩余文件。并且當第一個看到的目錄是“.git”時,由于您將其作為異常處理,因此嵌套traverseDir也返回。


查看完整回答
反對 回復 2022-05-23
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號