解析参数

package main

import (
	"flag"
	"fmt"
	"time"
)
//接受一个参数name 值是字符串,默认值是john,-help输出的提示是“输入你的名字”
var cliName = flag.String("name", "John", "输入你的名字")
//接受一个参数age 值是整型,默认值是22,-help输出的提示是“输入你的年龄”
var cliAge = flag.Int("age", 22, "输入你的年龄")
var cliGender = flag.String("gender", "male", "输入你的性别")
//接受一个参数period 值是时间类型,默认值是1s,-help输出的提示是“休眠的时间”
var cliPeriod = flag.Duration("period", 1*time.Second, "休眠的时间")

// 定义一个值类型的命令行参数变量,在 Init() 函数中对其初始化
// 因此,命令行参数对应变量的定义和初始化是可以分开的
var cliFlag int

func Init() {
	flag.IntVar(&cliFlag, "flagname", 1234, "必须输入的项")
}
func main() {
	// 初始化变量 cliFlag
	Init()
    var abcd string
	flag.StringVar(&abcd, "xincan", "aaaaa", "这里是提示的字符串")
	// 把用户传递的命令行参数解析为对应变量的值
	flag.Parse()

	// flag.Args() 函数返回没有被解析的命令行参数
	// func NArg() 函数返回没有被解析的命令行参数的个数
	fmt.Printf("args=%s, num=%d\n", flag.Args(), flag.NArg())
	for i := 0; i != flag.NArg(); i++ {
		fmt.Printf("arg[%d]=%s\n", i, flag.Arg(i))
	}
	// 输出命令行参数
	fmt.Println("name=", *cliName)
	fmt.Println("age=", *cliAge)
	fmt.Println("gender=", *cliGender)
	fmt.Printf("period=", *cliPeriod)
    fmt.Println("xincan=", abcd)
	fmt.Println(cliFlag)
}

使用flag.Parse()可以使用-help参数,输出帮助信息

两种获取参数值的方法

一种:

flag.String("name", "John", "输入你的名字")

flag.Int("age", 22, "输入你的年龄")

这种是有返回值的,返回值是指针,获取的值赋给了第一个参数指针所对应的值,也是通过第一个参数在命令中指定参数

例如,第一个是通过-name来指定参数,而获取值是通过*name来获取

另一种:

flag.StringVar(&abcd, "xincan", "aaaaa", "这里是提示的字符串")

flag.IntVar(&cliFlag, "flagname", 1234, "必须输入的项")

这种是没有返回值的,获取的值赋给了第一个参数,而在命令中是通过第二个参数在命令中指定参数

例如,第一个命令中是通过-xincan来指定参数,而赋的值是通过abcd来获取


重点

以上这些获取参数的代码,必须在flag.Parse()之前flag.Parse()意思是把用hi的命令行参数解析为对应的变量


利用help参数来获取帮助

$ go run .\index\doc2db\main.go -help               
Usage of C:\Users\xxx\AppData\Local\Temp\go-build327812121\b001\exe\main.exe:
  -age int
        输入你的年龄 (default 22)
  -flagname int
        必须输入的项 (default 1234)
  -gender string
        输入你的性别 (default "male")
  -name string
        输入你的名字 (default "John")
  -period duration
        休眠的时间 (default 1s)
  -xincan string
        这里是提示的字符串 (default "aaaaa")
posted @ 2022-11-15 11:14  厚礼蝎  阅读(22)  评论(0编辑  收藏  举报