ディレクトリの中にあるファイルの一覧を取得するプログラムについて勉強しています。
以下のプログラムで一覧を取得できるのですが、プログラムのソースを読んでいてよくわからない
ところがあるので教えてください。
package main import ( "fmt" "io/ioutil" "path/filepath" ) func main() { fmt.Println(dirwalk("./otakukoi2")) } func dirwalk(dir string) []string { files, err := ioutil.ReadDir(dir) if err != nil { panic(err) } var paths []string for _, file := range files { if file.IsDir() { paths = append(paths, dirwalk(filepath.Join(dir, file.Name()))...) continue } paths = append(paths, filepath.Join(dir, file.Name())) } return paths }
引用元
https://qiita.com/tanksuzuki/items/7866768c36e13f09eedb
以下の部分がよくわかりません。
paths = append(paths, dirwalk(filepath.Join(dir, file.Name()))...)
わからないことは、2点あります。
①(dir, file.Name())...の...のところ
②dirwalkは関数を再帰的に使っているのか
ご教授の方をよろしくお願いします。
もう少し説明させていただくと、appendでpathsの配列に文字列を足しているのですが、
dirwalk関数の意味がよくわかりません。dirwalk(filepath.Join(dir, file.Name()))...の
箇所の...のところとかgolangの文法的なところでしょうか。dirwalk事態は再帰的に呼び出しているのでしょうか。間違っていたら、すいません。
ちゃんと説明しよう
どのような点が説明でわかりにくいでしょうか
ご教授がありがたいですが、アバウトすぎて申し訳ないとは思うのですが、何がいけないのかわかりません。
読んだ?最低3回は読もう。理解出来るまで読もう。回答者側の視点に立てるまで読もう。今日はとことん読もう。
3回読んだのですが、よくわかりません。ほんと何がわからないのか、わからないので教えていただけませんか。
説明文を追加させていただきました。
三回読んで理解出来ないなら100回読もう。
私も、いろいろと作業していてわからないところをこちらで質問させていただいています。
質問していて、親切にみなさんご回答していただいて本当に感謝しております。
質問の内容で何がわからないのかが、よく私自身よくわかっておりません。
ご指摘をしていただけないでしょうか。
ワタシの指摘はアバウトで分からないだろう?つまり、そういうことだ。
では、どのように伝えればよろしいでしょうか。
その質問する前にどうしたら良いかどのくらい考えた?
よくわからない箇所は、端的に言いますと、
dirwalk(filepath.Join(dir, file.Name()))...
です。
dirwalkを再帰的に呼び出していると思うのですが、最後の...のドット3つの意味がわかりません。
このようなプログラムの書き方は他の言語では、あまりないように思います。
そろそろランチの時間だからランチしてくる
どのような意味があるのでしょうか
ご指摘ありがとうございます。
わからないところを少し追加して見ました。
回答1件
あなたの回答
tips
プレビュー