查询FlagSet用法

问题描述 投票:-1回答:1

我正在尝试构建一个CLI,我期望一组三个参数一起出现。

command --alpha "value-a" --bravo "value-b" --charlie "value-c"

这就是我试图这样做的方式:

import (
    "github.com/spf13/pflag"
)

var (
    alpha         string
    bravo         string
    charlie       string
)

abcFlagSet := pflag.NewFlagSet("alpha", pflag.ContinueOnError)
abcFlagSet.StringVar(&bravo, "bravo", "", "bravo-description")
abcFlagSet.StringVar(&charlie, "charlie", "", "charlie-description")
cmd.Flags().AddFlagSet(abcFlagSet)

这正确识别bravocharlie标志。但是,我认为它将alpha视为command的子命令,并不解析分配给它的值,即value-aFlagSet是否适用于此用例?我应该如何解析这三个参数可以一起出现或者根本不出现的场景?

go flags
1个回答
1
投票

https://github.com/spf13/pflag/blob/298182f68c66c05229eb03ac171abe6e309ee79a/flag.go#L1202-L1213,正如在这里所说,你正在形成一个名为FlagSetalpha。显然,您的代码不会将其视为标志。定义名为alpha的新标志的正确方法是

abcFlagSet.StringVar(&alpha, "alpha", "", "alpha-description")

© www.soinside.com 2019 - 2024. All rights reserved.