美文网首页
pflag命令行参数

pflag命令行参数

作者: Nick_4438 | 来源:发表于2021-09-21 22:23 被阅读0次

简介

本文讲解如何在go程序中使用命令行参数包pflag来获取gong语言编写的命令行程序的传入参数。

  • 命令行参数,形如:
./cmd -a hello --b you
--flag    // boolean flags, or flags with no option default values
--flag x  // only on flags without a default value
--flag=x

使用

  • 简单使用
package main

import (
    "fmt"
    flag "github.com/spf13/pflag"
)
//用法1: 使用指针获取传入参数  --age 122 ,
var age *int = flag.Int("age", 1234, "help message for age")
//用法2: 短参数用法,传入参数 --age1 122 或者  -a 133
var age1 = flag.IntP("age1", "a", 222, "help message")
//用法3: 定义一个变量,使用 flag.IntVar
var flagvar int
var enable* bool= flag.Bool("enable", true, "help message for enable")

func main() {
    // 定义了所有的flag之后调用一次 flag.Parse() 对应的flag能够获得值
    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
    flag.Parse()
    fmt.Println("age:",*age)
    fmt.Println("age1",*age1)
    fmt.Println("enable:" ,*enable)

}

  • 定义flag可以使用flag.String(), Bool(), Int()等:
var age *int = flag.Int("age", 1234, "help message for age")
var name *string = flag.String("name", "default name", "help message for name")
var enable * bool= flag.Bool("enable", true, "help message for enable")
  • 短参数命令只需要在对应函数后面加一个P即可,第二个参数为对应的短命令,返回值为值本身而不是指针了
var age1 = flag.IntP("age1", "a", 222, "help message")
var name string = flag.StringP("name","n", "default name", "help message for name")
var enable bool= flag.BoolP("enable","e", true, "help message for enable")
  • 也可以绑定标志的值给变量,只需用对应的Var函数即可
var flagvar int
func init() {
    // 写法1
    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
    // 写法2
    flag.Var(&flagVal, "name", "help message for flagname")
}
  • 配置没有option的flag,如下例子,当存在flag但是没有option的时候值为 NoOptDefVal的时候的值
var ip = flag.IntP("flagname", "f", 1234, "help message")
flag.Lookup("flagname").NoOptDefVal = "4321"
  • --flagname=1357 ip=1357
  • --flagname ip=4321
  • [nothing] ip=1234

使用pflag去支持 Go默认的flags特性

为了支持go语言flag包,go flags需要添加到pflag的flagset。
例如:我们想添加go flags到CommandLine flagset

import (
    goflag "flag"
    flag "github.com/spf13/pflag"
)
var ip *int = flag.Int("flagname", 1234, "help message for flagname")

func main() {
    flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
    flag.Parse()
}

相关文章

  • pflag命令行参数

    简介 本文讲解如何在go程序中使用命令行参数包pflag来获取gong语言编写的命令行程序的传入参数。 命令行参数...

  • 05-18golang中pflag

    参考github spf13/pflag[https://github.com/spf13/pflag]Golan...

  • 九、处理用户输入

    简单目录 1.命令行参数 2.处理命令行选项和命令行参数参数 3.read命令获取用户输入 1.命令行参数 在命令...

  • 常用的npm包

    命令行参数处理 nodejs 脚本,命令行参数处理,接受参数parse 可以使用 minimist 参数提示 co...

  • 特殊变量列表

    特殊变量列表 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一...

  • Java 命令行参数解析类库

    命令行参数解析类库1命令行参数解析类库2命令行参数解析类库3 JArgsJakarta Commons CLITE...

  • 第14章:处理用户输入

    [TOC] #1. 命令行参数 向shell脚本传递数据的最基本方法是使用命令行参数。命令行参数允许在运行脚本时向...

  • flag

    编写命令行程序时会使用不同的启动参数(命令行参数)来控制程序的行为 Go编写命令行程序时,获取并解析命令行参数的方...

  • 2.2.7 shell位置参数与特殊变量

    命令行参数

  • shell环境变量一览

    变量说明*含有所有命令行参数(以单个文本值的形式)@含有所有命令行参数(以多个文本值的形式)#命令行参数数目?最近...

网友评论

      本文标题:pflag命令行参数

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