当前位置:   article > 正文

Golang如何使用命令行-- flag库

Golang如何使用命令行-- flag库

参考文献:

flag package - flag - Go Packages

使用:

  1. import "flag"
  2. var nFlag = flag.Int("n", 1234, "help message for flag n")

上述方法返回的是一个指针变量nFlag,如果我们要打印,应该使用如下方式:

fmt.Println("ip has value: ", *nFlag)

或者可以使用IntVar来返回值:

  1. var flagvar int
  2. func init() {
  3. flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
  4. }

可以直接打印:

fmt.Println("flagName is: ", flagValue)

在打印前应该加上flag.Prase()显示解析我们的参数值

示例代码

  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. )
  7. type Cmd struct {
  8. helpFlag bool
  9. versionFlag bool
  10. cpOption string
  11. class string
  12. args []string
  13. }
  14. func parseCmd() *Cmd {
  15. // 创建一个指向Cmd结构体类型的指针变量cmd,并将其初始化为一个空的Cmd结构体实例
  16. cmd := &Cmd{}
  17. flag.Usage = printUsage
  18. flag.BoolVar(&cmd.helpFlag, "help", false, "print help message")
  19. flag.BoolVar(&cmd.helpFlag, "?", false, "print help message")
  20. flag.BoolVar(&cmd.versionFlag, "version", false, "print version and exit")
  21. flag.StringVar(&cmd.cpOption, "classpath", "", "classpath")
  22. flag.StringVar(&cmd.cpOption, "cp", "", "classpath")
  23. flag.Parse()
  24. args := flag.Args()
  25. if len(args) > 0 {
  26. cmd.class = args[0]
  27. cmd.args = args[1:]
  28. }
  29. return cmd
  30. }
  31. func printUsage() {
  32. // os.Args 存放传递给命令行的全部参数
  33. fmt.Printf("Usage: ·%s [-options] class [args...]\n", os.Args[0])
  34. }

运行类:

  1. package main
  2. import "fmt"
  3. func main() {
  4. cmd := parseCmd()
  5. if cmd.versionFlag {
  6. fmt.Println("version 0.0.1")
  7. } else if cmd.helpFlag || cmd.class == "" {
  8. printUsage()
  9. } else {
  10. startJVM(cmd)
  11. }
  12. }
  13. func startJVM(cmd *Cmd) {
  14. fmt.Printf("classpath:%s class:%s args:%s args:%v\n",
  15. cmd.cpOption, cmd.class, cmd.args)
  16. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号