How about implement the Watch method should like this:
func (w *Watcher) Watch(path string, n int) error
if n>0, Watch the path down to n levels
if n<=0, Watch the path all the way down
Suppose the following structure:
C:\temp\file1
C:\temp\dir1\file2
C:\temp\dir1\dir2\file3
C:\temp\dir1\dir2\dir3\file4
If Watch("C:/temp", 1), it should return create/rename/modify/delete event for the "file1" and "dir1"
If Watch("C:/temp", 2), it should return create/rename/modify/delete event for the "file1" and "dir1", also "file2" and "dir2"
The current implementation is like 1.5, which like Watch("C:/temp", 2), but lacks event for the "file2" midification.
Andrew