zoukankan      html  css  js  c++  java
  • go的命令行参数---flag

    (参考博客http://blog.csdn.net/u010003835/article/details/51896764)

    1、os原始命令行参数访问功能:

      package main

      import "os"

      import "fmt"

      func main(){

        argsWithProg := os.Args

        argsWithoutProg := os.Args[1:]

        arg := os.Args[3]

        fmt.Println(argsWithProg)

        fmt.Println(argsWithoutProg)

        fmt.Println(arg)

      }

    ~go build command-line-arguments.go
    ~./command-line-arguments a b c d [./command-line-arguments a b c d] [a b c d] c

    2、用flag包指定命令行参数
    (基本的标记声明仅支持字符串String,整数Int和布尔值Bool选项。每种声明包含三个参数(命令标志,默认值,简要解释),返回指针。示例如下:
    package main
    import "flag"
    import "fmt"
    func main(){
      wordPtr := flag.String("word", "foo", "a string")
      numPtr := flag.Int("numb", 60, "a number")
      boolPtr := flag.Bool("bool", false, "a bool")
      //所有声明都完成后需要调用flag.Palse()来执行命令解析
      flag.Parse()
      fmt.Println("word: ", *wordPtr)
      fmt.Println("numb: ", *numPtr)
      fmt.Println("bool: ", *boolPtr)
      //flag.Args()得到所有命令行的位置参数,且所有有标志的参数必须出现在位置参数之前
      fmt.Println("tail: ",flag.Args())
    }
    ------注意到,如果你省略一个标志,那么这个标志的值自动的设定为他的默认值
    $$test -word=yixuan
    word: yixuan
    numb: 60
    bool: false
    tail: []
    ------位置参数可以出现在任何标志后面
    $$test -word=yixuan arg1 arg2 arg3
    word: yixuan
    numb: 60
    bool: false
    tail: [arg1 arg2 arg3]
    ------注意,flag 包需要所有的标志出现位置参数之前(否则,这个标志将会被解析为位置参数)
    $$test -word=yixuan arg1 arg2 arg3 -numb=28
    word: yixuan
    numb: 60
    bool: false
    tail: [arg1 arg2 arg3 -numb=28]






  • 相关阅读:
    Jboss部署war以及获取Resource的真实路径
    命令行获取docker远程仓库镜像列表
    Hibernate5 与 Spring Boot2 最佳性能实践
    Spring Bean的一生
    Spring中统一相同版本的api请求路径的一些思考
    Java并发工具类CountDownLatch源码中的例子
    (转载)23种设计模式的uml图表示及通俗介绍
    GeoHash核心原理解析
    如何保证服务器的安全?
    小强升职记
  • 原文地址:https://www.cnblogs.com/liushi-Oscar/p/8298660.html
Copyright © 2011-2022 走看看