You could do:
func inspect(n ast.Node) func(func(ast.Node) bool) {
return func(f func(ast.Node) bool) {
ast.Inspect(n, f)
}
}
used: for n := range inspect(f) {
fmt.Printf("%T\n", n)
}