加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang命令行参数解析

发布时间:2020-12-16 09:20:50 所属栏目:大数据 来源:网络整理
导读:1. os基础处理 os包中有一个string类型的切片变量os.Args,其用来处理一些基本的命令行参数,它在程序启动后读取命令行输入的参数。参数会放置在切片os.Args[]中(以空格分隔),从索引1开始(os.Args[0]放的是程序本身的名字)。 fmt.Println("Parameters:"

1. os基础处理

os包中有一个string类型的切片变量os.Args,其用来处理一些基本的命令行参数,它在程序启动后读取命令行输入的参数。参数会放置在切片os.Args[]中(以空格分隔),从索引1开始(os.Args[0]放的是程序本身的名字)。

fmt.Println("Parameters:",os.Args[1:])

?

2. flag参数解析

flag包可以用来解析命令行选项,但通常被用来替换基本常量。例如,在某些情况下希望在命令行给常量一些不一样的值。

type Flag struct {
    Name     string // name as it appears on command line
    Usage    string // help message
    Value    Value  // value as set
    DefValue string // default value (as text); for usage message
}

flag的使用规则是:首先定义flag(定义的flag会被解析),然后使用Parse()解析flag,解析后已定义的flag可以直接使用,未定义的剩余的flag可通过Arg(i)单独获取或通过Args()切片整个获取。

定义flag

func String(name string,value string,usage string) *string
func StringVar(p *string,name string,usage string)
func Int(name string,value int,usage string) *int
func IntVar(p *int,usage string)

解析flag

func Parse()

Parse() parses the command-line flags from os.Args[1:]. Must be called after all flags are defined and before flags are accessed by the program.

func Arg(i int) string
func Args() []string

Arg returns the i‘th command-line argument. Arg(0) is the first remaining argument after flags have been processed.

Args returns the non-flag command-line arguments.

After parsing,the arguments following the flags are available as the slice flag.Args() or individually as flag.Arg(i). The arguments are indexed from 0 through flag.NArg()-1.

func NArg() int

NArg is the number of arguments remaining after flags have been processed.

Flags may then be used directly. If you‘re using the flags themselves,they are all pointers; if you bind to variables,they‘re values.

package main
import (
        "fmt"
        "flag"
)

func main(){
        var new_line = flag.Bool("n",false,"new line")
        var max_num int
        flag.IntVar(&max_num,"MAX_NUM",100,"the num max")

        flag.PrintDefaults()
        flag.Parse()

        fmt.Println("There are",flag.NFlag(),"remaining args,they are:",flag.Args())
        fmt.Println("n has value: ",*new_line)
        fmt.Println("MAX_NJUM has value: ",max_num)
}
$ go build -o flag flag.go
$ ./flag
  -MAX_NUM int
        the num max (default 100)
  -n    new line
There are 0 remaining args,they are: []
n has value:  false
MAX_NJUM has value:  100
$ ./flag -n -MAX_NUM=1000 wang qin
  -MAX_NUM int
        the num max (default 100)
  -n    new line
There are 2 remaining args,they are: [wang qin]
n has value:  true
MAX_NJUM has value:  1000

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读