首页 > 解决方案 > Golang:忽略标志参数的位置

问题描述

这是我学习 Python 几个月后与 Go 的第一次互动。我正在构建一个简单的实用程序,它接受命令行参数并返回结果。

list := flag.Bool("list", false, "List existing URLs")
url := flag.String("lu", "", "original URL including https:// or http://")

然后我有逻辑来检查输入:

if *url == "" && *list == false {
        fmt.Println("Provide correct input values")
        flag.PrintDefaults()
        os.Exit(1)
    } else if *list == true && *url != "" {
        fmt.Println("Choose either -list or -lu")
        flag.PrintDefaults()
        os.Exit(1)
    } else if *url == "" && *list == true {
        fmt.Println("Only listing URLs")
        listUrls()
    } else if *url != "" && *list == false {
        fmt.Println("Your URL: ", Url)
    }

我的问题是当我执行

go run main.go -list true -lu http://google.com

它返回 URL 列表,但是当我运行时

go run main.go -lu http://google.com -list true

它返回

Choose either -list or -lu

我错过了一些明显的东西吗?似乎它关心论点的顺序,但我找不到任何证实它的东西。

标签: go

解决方案


推荐阅读