我想用连字符访问命令行参数,例如:

go run user.go -version

或者
go run user.go --version

当我这样执行时,收到以下错误:
flag provided but not defined: -version
Usage of /tmp/go-build354377460/command-line-arguments/_obj/exe/user:
  --version string
        prints current version and exits
exit status 2

这是我的代码:
 package main

import (
    "flag"
    "fmt"
)

func main() {
    var version string
    flag.StringVar(&version, "-version", "", "prints current version and exits")

    // Parse the flags
    flag.Parse()

    fmt.Println(flag.Args())
}

任何帮助是极大的赞赏。提前致谢。

最佳答案

使用 bool 。标记定义中不要包含“-”。

func main() {
    var version bool
    flag.BoolVar(&version, "version", false, "prints current version and exits")
    flag.Parse()
    if version {
        fmt.Println("hello")
        return
    }
    fmt.Println(flag.Args())
}

08-25 06:50
查看更多