Command-Line

命令行参数

argsWithProg := os.Args
argsWithoutProg := os.Args[1:]
fmt.Println(argsWithProg)
fmt.Println(argsWithoutProg)

命令行中运行程序并输入:

./command-line-arguments a b c d

命令行输出:

[./command-line-arguments a b c d]
[a b c d]

命令行标志

wordPtr := flag.String("word", "foo", "a string")
numbPtr := flag.Int("numb", 42, "an int")
forkPtr := flag.Bool("fork", false, "a bool")
var svar string
flag.StringVar(&svar, "svar", "bar", "a string var")
flag.Parse()
fmt.Println("word:", *wordPtr)
fmt.Println("numb:", *numbPtr)
fmt.Println("fork:", *forkPtr)
fmt.Println("svar:", svar)
fmt.Println("tail:", flag.Args())

% ./command-line-flags -word=opt -numb=7 -fork -svar=flag
word: opt
numb: 7
fork: true
svar: flag
tail: []

% ./command-line-flags -word=opt
word: opt
numb: 42
fork: false
svar: bar
tail: []

% ./command-line-flags -word=opt a1 a2 a3
word: opt
numb: 42
fork: false
svar: bar
tail: [a1 a2 a3]

% ./command-line-flags -word=opt a1 a2 a3 -numb=7
word: opt
numb: 42
fork: false
svar: bar
tail: [a1 a2 a3 -numb=7]

% ./command-line-flags -h
Usage of ./command-line-flags:
-fork
a bool
-numb int
an int (default 42)
-svar string
a string var (default “bar”)
-word string
a string (default “foo”)

% ./command-line-flags -wat
flag provided but not defined: -wat
Usage of ./command-line-flags:
-fork
a bool
-numb int
an int (default 42)
-svar string
a string var (default “bar”)
-word string
a string (default “foo”)

命令行子参数

fooCmd := flag.NewFlagSet("foo", flag.ExitOnError)
fooEnable := fooCmd.Bool("enable", false, "enable")
fooName := fooCmd.String("name", "", "name")

barCmd := flag.NewFlagSet("bar", flag.ExitOnError)
barLevel := barCmd.Int("level", 0, "level")

if len(os.Args) < 2 {
	fmt.Println("expected 'foo' or 'bar' subcommands")
	os.Exit(1)
}

switch os.Args[1] {
case "foo":
	fooCmd.Parse(os.Args[2:])
	fmt.Println("subcommand 'foo'")
	fmt.Println("  enable:", *fooEnable)
	fmt.Println("  name:", *fooName)
	fmt.Println("  tail:", fooCmd.Args())
case "bar":
	barCmd.Parse(os.Args[2:])
	fmt.Println("subcommand 'bar'")
	fmt.Println("  level:", *barLevel)
	fmt.Println("  tail:", barCmd.Args())
default:
	fmt.Println("expected 'foo' or 'bar' subcommands")
	os.Exit(1)
}

% ./command-line-subcommands foo -enable -name=joe a1 a2
subcommand ‘foo’
enable: true
name: joe
tail: [a1 a2]

% ./command-line-subcommands bar -level 8 a1
subcommand ‘bar’
level: 8
tail: [a1]

% ./command-line-subcommands bar -enable a1
flag provided but not defined: -enable
Usage of bar:
-level int
level

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值