美文网首页
Go 命令行参数

Go 命令行参数

作者: 岑吾 | 来源:发表于2020-03-28 18:19 被阅读0次

    在linux中,很多都程序都习惯用命令行传参。如:

    /usr/local/frp/frps -c /usr/local/frp/frps.ini
    

    1. os.Args

    对于Go,命令行参数是用os.Args这个string的切片来存储的。启动的时候,各参数以空格分割。os.Args的长度到少为1,第一个值就是应用自身的绝对路径,如上面的os.Args/usr/local/frp/frps, 第二个值是-c,第三个值是/usr/local/frp/frps.ini依次类推。
    可以根据自己的需求来解析需要的参数。

    2. Flag包

    Go 有flag包来解析参数,可以省掉很多麻烦。

    2.1 支持参数形式

    flag支持3种格式的参数

    -flag
    -flag=x
    -flag x // x不能是bool值
    

    2.1

    提供的接口有:

    func Bool(name string, value bool, usage string) *bool
    func Int(name string, value int, usage string) *int
    func Int64(name string, value int64, usage string) *int64
    func Uint(name string, value uint, usage string) *uint
    func Uint64(name string, value uint64, usage string) *uint64
    func Float64(name string, value float64, usage string) *float64
    func String(name string, value string, usage string) *string
    
    • name: 获取参数的名字,如:-c中的c
    • value: 默认值,没有对应名字参数时值
    • usage: 帮助提示值,输入 --help时显示
    • 返回值: 返回值都是指针。

    2.2 例子

    以前面test -c /usr/local/frp/frps.ini参数为例

    package main
     
    import (
        "flag"
        "fmt"
    )
     
    func main() {
        cfgfile := flag.Bool("c", "frps.ini", "输入frps配置文件路径")
     
        flag.Parse() //解析输入的参数
     
        fmt.Println("配置文件c:", *cfgfile)
    }
    

    输出

    配置文件c: /usr/local/frp/frps.ini
    

    相关文章

      网友评论

          本文标题:Go 命令行参数

          本文链接:https://www.haomeiwen.com/subject/arjsuhtx.html