Golang小脚本疑似语法错误导致无法运行
Golang小脚本疑似语法错误导致无法运行 我写了一个小脚本,因为我的女朋友最近转用Linux系统,我想让她能方便地使用youtube-dl。不过在编写这个Go脚本时遇到了障碍,可能只是我太笨了,因为代码完全没反应。我怀疑问题出在尝试将name变量添加到命令时操作不当。
package main
import ( "os"
"os/exec"
"log"
"http://github.com/tcnksm/go-input"
)
func main() {
ui := &input.UI{
Writer: os.Stdout,
Reader: os.Stdin,
}
query := "Please paste the link of the playlist"
name, err := ui.Ask(query, &input.Options{
Required: true,
}) if err != nil {
log.Fatal(err)}
exec.Command("youtube-dl -v -x -i --yes-playlist " + name )
}
更多关于Golang小脚本疑似语法错误导致无法运行的实战教程也可以访问 https://www.itying.com/category-94-b0.html
5 回复
实际上我刚才粘贴错了,换行符是存在的,而且编译器实际上没有报错,代码可以运行,只是没有任何效果
更多关于Golang小脚本疑似语法错误导致无法运行的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
假设没有语法错误(甚至包括HTTP相关的错误),那么你的程序(不是脚本)确实创建了一个命令,但从未执行 Run() 它。
- 导入路径不需要模式(schema),因此只需写
github.com/tcnksm/go-input - 有几处
&你只需要写& - 在
if err != nil …之前缺少一个换行
所有这些在阅读编译器输出的错误信息时都有提示。
func main() {
fmt.Println("hello world")
}
这可能会有所帮助:
package main
import (
"os"
"os/exec"
"log"
"github.com/tcnksm/go-input"
)
func main() {
ui := &input.UI {
Writer: os.Stdout,
Reader: os.Stdin,
}
query := "Please paste the link of the playlist"
name, err := ui.Ask(query, &input.Options{ Required: true, })
if err != nil {
log.Fatal(err)
}
command_name := "youtube-dl"
command_args := []string {
"-v",
"-x",
"-i",
"--yes-playlist",
name,
}
cmd := exec.Command(command_name, command_args...)
err = cmd.Run()
if err != nil { log.Printf("err = %v\n",err) }
}
我使用你提供的参数尝试了它,得到了一个只有音频没有画面的视频。如果出现这种情况,请尝试为 youtube-dl 命令使用不同的参数。
你的代码中存在几个语法和逻辑问题,导致程序无法正常运行。以下是修正后的版本:
package main
import (
"log"
"os"
"os/exec"
"github.com/tcnksm/go-input"
)
func main() {
ui := &input.UI{
Writer: os.Stdout,
Reader: os.Stdin,
}
query := "Please paste the link of the playlist"
name, err := ui.Ask(query, &input.Options{
Required: true,
})
if err != nil {
log.Fatal(err)
}
// 构建命令并执行
cmd := exec.Command("youtube-dl", "-v", "-x", "-i", "--yes-playlist", name)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
log.Fatal("Failed to execute command:", err)
}
}
主要问题修正:
- import语句格式错误:删除了无效的URL格式导入,使用正确的包导入语法
- 命令执行逻辑缺失:
exec.Command()只是创建命令对象,需要调用Run()方法执行 - 参数传递方式错误:应该将命令和参数分开传递,而不是拼接成单个字符串
- 输出处理缺失:添加了标准输出和错误输出的重定向
如果你的系统没有安装youtube-dl,程序会报错。确保已通过包管理器安装:
# Ubuntu/Debian
sudo apt install youtube-dl
# 或者使用pip
pip install youtube-dl
修正后的代码会正确提示用户输入播放列表链接,然后执行相应的youtube-dl命令。

