// +build ignore,OMIT package main import ( "fmt" "io/ioutil" "path/filepath" "runtime" "strings" ) func walk(dir string, f func(string) bool) bool { fis, err := ioutil.ReadDir(dir) if err != nil { panic(err) } // parse all *.go files in directory; // traverse subdirectories, but don't walk into testdata for _, fi := range fis { path := filepath.Join(dir, fi.Name()) if fi.IsDir() { if fi.Name() != "testdata" { if !walk(path, f) { return false } } } else if strings.HasSuffix(fi.Name(), ".go") && !strings.HasPrefix(fi.Name(), ".") { if !f(path) { return false } } } return true } func walkStdLib(f func(filename string) bool) { walk(filepath.Join(runtime.GOROOT(), "src"), f) } func _() { // example START OMIT n := 0 println := func(s string) bool { fmt.Println(n, s) n++ return n < 10 } walkStdLib(println) // example END OMIT } func main() { // main START OMIT n := 0 walkStdLib(func(s string) bool { fmt.Println(n, s) n++ return n < 10 }) // main END OMIT }