golang/逆引き

Ads

目的

やり方

os.File の Readdir 等を使って再帰的な関数を書けば出来るが標準パッケージにある path.Walk() を使うとシンプルに書けるらしい。

サンプル

find1.go
package main

import (
    "fmt";
    "path";
    "os";
)

type my_visitor struct{}

func (v *my_visitor) VisitDir(path string, d *os.Dir) bool {
    fmt.Printf("d: %s\n", path);
    return true;
}

func (v *my_visitor) VisitFile(path string, d *os.Dir) {
    fmt.Printf("f: %s\n", path);
}

func main() {
    v := &my_visitor{};
    errors := make(chan os.Error);
    path.Walk("/etc/httpd", v, errors);
}
実行結果
d: /etc/httpd
d: /etc/httpd/conf
f: /etc/httpd/conf/httpd.conf
f: /etc/httpd/conf/magic
d: /etc/httpd/conf.d
f: /etc/httpd/conf.d/README
f: /etc/httpd/conf.d/mod_dnssd.conf
f: /etc/httpd/conf.d/php.conf
f: /etc/httpd/conf.d/proxy_ajp.conf
f: /etc/httpd/conf.d/welcome.conf
f: /etc/httpd/logs
f: /etc/httpd/modules
f: /etc/httpd/run

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS