命令行参数的作用_go:命令行参数

e7ccba130c673f97eece99941f338056.png

1. 说明

使用 flag 包获取命令行参数,控制程序执行

主要函数:

flag.String()
flag.StringVar()
flag.Int()
flag.IntVar()
flag.Float64()
flag.Float64Var()
flag.Bool()
flag.BoolVar()
...

http://flag.xxx(p1, p2, p3)

p1:命令行参数标志,flag 包根据该参数解析命令行参数;

p2:默认值。如果程序执行时没有指定该命令行参数,那么命令行参数为该值;

p3:参数说明。通常用于说明该参数作用;

返回值:指针类型。将命令行参数信息存储于内存中,返回指向该内存的指针。比如:flag.String() 将对应的参数存储在内存中,返回值为 *string 指针。

flag.xxxVar(p1, p2, p3, p4)

p1:指针类型,其指向的内存用于存储命令行参数值,比如:flag.StringVar(&s...) 会将对应命令行参数值存储在变量 s 中;

p2:命令行参数标志,flag 包根据该参数解析命令行参数;

p3:默认值。如果程序执行时没有指定该命令行参数,那么命令行参数为该值;

p4:参数说明。通常用于说明该参数作用;

返回值:无。

flag.Parse()

解析传入的命令行参数。

命令行参数指定方式

-flag=x
-flag x

2. 测试

package main
​
import (
    "fmt"
    "flag"
)
​
func main() {
    s := flag.String("n", "sdc", "name")    //姓名
    i := flag.Int("a", 30, "age")           //年龄
    f := flag.Float64("s", 1000.0, "salary")//薪资
    m := flag.Bool("m", true, "male or female")//性别
    flag.Parse()    //解析命令行参数
    flag.PrintDefaults()    //输出帮助信息
    fmt.Println(*s, *i, *f, *m)
}

执行:

无命令行参数:(均使用默认值)

./test
  -a int
        age (default 30)
  -m    male or female (default true)
  -n string
        name (default "sdc")
  -s float
        salary (default 1000)
sdc 30 1000 true

指定部分命令行参数:(未指定的参数使用其默认值)

./test -n "Lucy" -a 27 -m=f
  -a int
        age (default 30)
  -m    male or female (default true)
  -n string
        name (default "sdc")
  -s float
        salary (default 1000)
Lucy 27 1000 false

指定所有命令行参数:(所有参数使用指定值)

./test -n "Lucy" -a 27 -m=f -s 2000
   -a int
        age (default 30)
  -m    male or female (default true)
  -n string
        name (default "sdc")
  -s float
        salary (default 1000)
Lucy 27 2000 false

注:

  1. 向可执行程序传入命令行参数时,需要在参数标志前加 -。比如对于flag.String("n", "sdc", "name"),如果向可执行程序传入该参数,那么应输入:./test -n "Lucy"
  2. 指定 bool 类型的参数时,需要使用 -flag=x 的方式,不能使用 -flag x 的方式x 支持的值:1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值