码迷,mamicode.com
首页 > 其他好文 > 详细

golang命令行参数解析

时间:2019-11-19 13:44:26      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:ddd   参数   int   aaa   方式   -name   --   朋友   print   

golang的命令行参数解析,推荐两种。一个是os.Args,另一个是使用flag模块

os.Args

package main

import (
    "fmt"
    "os"
)

func main() {
    args := os.Args
    //使用go run xx.go 1 2 3 xx aaa bbb ccc  ddd  eee
    //那么args就是[xx.exe 1 2 3 xx aaa bbb ccc ddd eee]
    //并且全部是string类型
    fmt.Println(args)
}

技术图片

flag

flag模块可以支持使用关键字的方式指定参数

package main

import (
    "flag"
    "fmt"
)

func main() {
    //flag.Type里面接受三个参数,指定的名字,默认值,描述信息
    Name := flag.String("name", "mashiro", "姓名")
    Age := flag.Int("age", 16, "年龄")
    Has_bf := flag.Bool("has_bf", false, "有男朋友?")

    //解析
    flag.Parse()

    /*
    我们在命令行中便可以通过name satori age 16 has_bf false这种方式指定
    当然还可以使用其他方式比如 --name satori, -name satori, --name=satori,-name=satori
     */

    //但是注意:得到的Name、Age、Has_bf都是指针
    fmt.Println(*Name, *Age, *Has_bf)
}

技术图片

flag的其他参数

package main

import (
    "flag"
    "fmt"
)

func main() {
    Name := flag.String("name", "mashiro", "姓名")
    Age := flag.Int("age", 16, "年龄")
    Has_bf := flag.Bool("has_bf", false, "有男朋友?")
    flag.Parse()

    fmt.Println(*Name, *Age, *Has_bf)
    //命令行后的其他参数,是一个[]string类型
    fmt.Println(flag.Args())
    //命令行后的其他参数个数
    fmt.Println(flag.NArg())
    //命令行使用的参数个数
    fmt.Println(flag.NFlag())
}

技术图片

我们后面多指定了,a b c 1,所以可以通过flag.Args来获取,flag.NArgs就是多指定的参数个数,flag.NFlag则是我们在命令行,通过指定关键字的方式指定的参数个数,这里是2,因为has_bf我们没有指定,但即便如此也是打印了默认值的

flag模块还可以使用一种方式,flag.TypeVar,这和flag.Type是基本类似的

package main

import (
    "flag"
    "fmt"
)

func main() {
    var Name string
    var Age int 
    var Has_bf bool 
    flag.StringVar(&Name, "name", "mashiro", "姓名")
    flag.IntVar(&Age, "age", 16, "年龄")
    flag.BoolVar(&Has_bf, "has_bf", false, "有男朋友?")
    flag.Parse()

    fmt.Println(Name, Age, Has_bf)
    fmt.Println(flag.Args())
    fmt.Println(flag.NArg())
    fmt.Println(flag.NFlag())
}

flag.Type是直接返回一个指针,flag.TypeVar则是需要先声明变量,然后把指针传进去,至于后面的参数、以及结果都是一样的。

golang命令行参数解析

标签:ddd   参数   int   aaa   方式   -name   --   朋友   print   

原文地址:https://www.cnblogs.com/traditional/p/11888451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!