huch, have needed one day to understand that a function is in really was a cast.
path.Walk(p.String(), pathIter(c), nil);
you can think pathIter(c) is a function. but:
type pathIter chan<- Path
pathIter is a typedefinition. Therefore is pathIter(c) not a function with parameter c, rahter a casting from c (is a Path channel) to pathIter.