忽略标志大小写

时间:2018-06-20 19:17:34

标签: go

反正有没有忽略Go标志的大小写(不区分大小写)?

我想让我的程序尽可能原谅和用户友好。

 dbType := flags.String( "dbType", "", "The `dbType` to deploy. )

如果用户输入以下任何内容,我希望初始化此标志的值:

 -dbtype
 -dbType
 -DBTYPE

不幸的是,对于这个项目,我仅限于使用flag库。

2 个答案:

答案 0 :(得分:5)

Go标志区分大小写,因此默认情况下您无法执行所需操作。 但是您可以设置允许用户输入的值,并让它们指向相同的变量,即:

const dbTypeUsage = "The `dbType` to deploy."

var dbType string
flag.StringVar(&dbType, "dbType", "", dbTypeUsage)
flag.StringVar(&dbType, "DBTYPE", "", dbTypeUsage)
flag.StringVar(&dbType, "DBType", "", dbTypeUsage)
flag.StringVar(&dbType, "dbtype", "", dbTypeUsage)
...

答案 1 :(得分:0)

以小写字母定义您的标志

dbType := flags.String( "dbtype", "", "The `dbType` to deploy. )

,然后仅将您的标志字符串设置为ToLower()(假设您的标志是第二个参数):

args[1] = strings.ToLower(args[1])
err := flagSet.Parse(args[1:])