https://github.com/pkg/sftp

 1func sftpMkdir(path string, client *sftp.Client, fi os.FileInfo) error {
 2	log.Printf("[DEBUG] sftp: creating dir %s", path)
 3
 4	if err := client.Mkdir(path); err != nil {
 5		// Do not consider it an error if the directory existed
 6		remoteFi, fiErr := client.Lstat(path)
 7		if fiErr != nil || !remoteFi.IsDir() {
 8			return err
 9		}
10	}
11
12	mode := fi.Mode().Perm()
13	if err := client.Chmod(path, mode); err != nil {
14		return err
15	}
16	return nil
17}

参考