我正在使用 Go 中的 Cobra 框架創建一個客戶端,其中包括將文件上傳到即將發布的傳輸服務。我希望它是一個具有默認下載文件夾的最低限度可定制的。當我想檢查一個文件夾是否存在,該文件夾是一個文件夾而不是一個文件或檢查我是否有權寫入該文件夾時出現問題,我收到一個巨大的 goroutine 錯誤。要知道:我在 macOS 中使用拖放var dldpath stringinquire.Query().Input(&dldpath, "Chemin du dossier de téléchargement ", nil).Exec()println("le chemin est : ", dldpath)if len(dldpath) == 0 { fmt.Println(chalk.Red, "Erreur : Vous devez spécifier un dossier à téléverser") os.Exit(0)}dir, err := os.Stat(dldpath)if !dir.IsDir() { fmt.Println(chalk.Red, "Erreur : Le chemin spécifié n'est pas un dossier") os.Exit(0)}if errors.Is(err, os.ErrNotExist) { fmt.Println(chalk.Red, "Erreur : Dossier introuvable") os.Exit(0)}screen.Clear()screen.MoveTopLeft()fmt.Println(chalk.Green, "Dossier de téléchargement par défaut changé avec succès")錯誤:(對不起,我無法上傳圖片)le chemin est : '/Users/eliezayat/Downloads/bassine wavy.png'panic: runtime error: invalid memory address or nil pointer dereference[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x119b260]goroutine 1 [running]:freetranscli/cmd.glob..func3(0x1370900?, {0x11ef012?, 0x0?, 0x0?}) /Users/eliezayat/Documents/freetranscli/cmd/set.go:44 +0x280github.com/spf13/cobra.(*Command).execute(0x1370900, {0x13a3d80, 0x0, 0x0}) /Users/eliezayat/go/pkg/mod/github.com/spf13/[email protected]/command.go:920 +0x847github.com/spf13/cobra.(*Command).ExecuteC(0x1370620) /Users/eliezayat/go/pkg/mod/github.com/spf13/[email protected]/command.go:1044 +0x3bdgithub.com/spf13/cobra.(*Command).Execute(...) /Users/eliezayat/go/pkg/mod/github.com/spf13/[email protected]/command.go:968freetranscli/cmd.Execute() /Users/eliezayat/Documents/freetranscli/cmd/root.go:28 +0x25main.main() /Users/eliezayat/Documents/freetranscli/main.go:8 +0x17exit status 2
無法使用 Golang 掃描文件路徑
慕碼人8056858
2023-03-15 14:39:54