【golang学习笔记】flag包的简单使用,命令行解析

flag包实现了命令行参数的解析

本文只是简单入门,详细请看官方文档

func String

func String(name string, value string, usage string) *string
String用指定的名称、默认值、使用信息注册一个string类型flag。返回一个保存了该flag的值的指针。

package main

import (
   "flag"
   "fmt"
)

//第一个参数为name 第二个参数为默认值 第三个参数是描述
//需要注意的是接受的变量是一个指针
var mode = flag.String("mode", "", "process mode")

func main() {
    
    

   //进行解析
   flag.Parse()

   //输出
   fmt.Println(*mode)
}

在执行时使用 --name=value进行传递

命令行flag语法:

-flag
-flag=x
-flag x  // 只有非bool类型的flag可以 bool类型使用=赋值

一个-和两个-是一样的

例如:

go run main.go --mode=hello

func StringVar

func StringVar(p *string, name string, value string, usage string)
StringVar用指定的名称、默认值、使用信息注册一个string类型flag,并将flag的值保存到p指向的变量。

代码:

package main

import (
  "flag"
  "fmt"
)

func main() {
    
    

  var str string

  fmt.Println("开始解析")

  flag.StringVar(&str, "str", "", "parse string")

  //解析参数
  flag.Parse()
  //输出
  fmt.Println(str)

命令行输入:

 go run test1.go -str="hello go"

结果:

开始解析
hello go

flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。

flag参数 有效值
字符串flag 合法字符串
整数flag 1234、0664、0x1234等类型,也可以是负数。
浮点数flag 合法浮点数
bool类型flag 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。
时间段flag 任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m”。
合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。

猜你喜欢

转载自blog.csdn.net/qq_45795744/article/details/125928244