たいちょーの雑記

ぼくが3日に一度くらい雑記をかくところ

雑記 2020-03-13

雑記

プログラミングできねぇ

DFS

func dfs(base, p string, recursive bool, action func(string, os.FileInfo) error) error {
  path := filepath.Join(base, p)
  fi, err := os.Stat(path)
  if err != nil{return err}

  if fi.IsDir() {
    entries, err := ioutil.ReadDir(path)
    if err != nil{return err}
    for _, entry := range entries {
      item := filepath.Join(p, entry.Name())
      if entry.IsDir() && recursive {
        if err := dfs(base, item, recursive, action); err != nil{return err}
      } else {
        if err := action(item, entry); err != nil {return err}
      } 
  } else {
    if err := action(p, fi); err != nil{return err}
  }
  return nil
}

こういう感じで、 base に渡したパス以下のファイルやディレクトリへのパスを base からの距離でリストアップする奴が欲しいんだ…。できればGlobにも対応したい。 filepath.Walk絶対パス返してくるのでダメだった。これ適当に描いたけどあってるのかな

おわり

プログラミングはエディタでやろうな