有没有办法确定当前步骤是否为目录?

I need to implement sftp client that connects to a host, read all available files in a specified folder, then check if a particular file matches a pattern and copy it to according local directory. Problem is that i can't find a way to.

I tried to use client.Walk but cannot figure out a way to understand if this is a directory and skip it:

walker := client.Walk(startDir)
for walker.Step() {
    if err := walker.Err(); err != nil {
        fmt.Fprintln(os.Stderr, err)
        continue
    }


    filePath := walker.Path()
}

How can I determine if the current iteration is directory?

You may use Walker.Stat() to obtain info about the most recent file or directory visited by a call to Walker.Step(). It returns you a value of type os.FileInfo which has an IsDir() method.

For example:

for walker.Step() {
    if err := walker.Err(); err != nil {
        fmt.Fprintln(os.Stderr, err)
        continue
    }

    if fi := walker.Stat(); fi.IsDir() {
        continue // Skip dir
    }

    // ...
}