gpt4 book ai didi

go - Golang命令参数为空导致错误

转载 作者:行者123 更新时间:2023-12-01 22:41:15 24 4
gpt4 key购买 nike

我正在编写一个go程序,需要使用命令参数。但是,如果在运行可执行文件或go run gosite.go时未传递参数,则会发生以下运行时错误。

panic: runtime error: index out of range

goroutine 1 [running]:
runtime.panic(0x80c8540, 0x816d4b7)
/usr/lib/go/src/pkg/runtime/panic.c:266 +0xac
main.main()
/home/jacob/github/gosite/src/github.com/zachdyer/gosite/gosite.go:11 +0x168

该错误位于第11行。所以我的问题是我是否以错误的方式使用了 os.Args?是否需要以其他方式初始化?还有为什么它似乎在那里陷入无限循环呢?如果我传入一个参数,程序将运行而不会出现任何错误并输出该参数。
import (
"fmt"
"os"
)

var root string

func main() {
command := os.Args[1]
if command != "" {
fmt.Println(command)
} else {
command = ""
fmt.Println("No command given")
}

createDir("public")
createDir("themes")
}

func createDir(dir string) {
root = "../../../../"
err := os.Mkdir(root + dir, 0777)
if err != nil {
fmt.Println(err)
}

}

最佳答案

首先检查os.Args slice 的长度,仅索引直至其长度-1:

if len(os.Args) > 1 {
command := os.Args[1]
// do something with command
} else {
// No arguments were specified!
}

os.Args保存以程序名称开头的命令行参数。
os.Args[0]是程序名称。如果有参数,则转到 Args[1]Args[2] ...

如果未指定任何参数,则 os.Args的长度将为1,并且仅保存程序名称。

另外,为了更轻松,更复杂地处理参数,请查看 flag 软件包。

关于go - Golang命令参数为空导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63684913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com