Go 忽略标志案例

Go 忽略标志案例,go,Go,是否仍然可以忽略Go标志的大小写(不区分大小写) 我想让我的程序尽可能的宽容和用户友好 dbType := flags.String( "dbType", "", "The `dbType` to deploy. ) 如果用户输入以下任一项,我希望初始化此标志的值: -dbtype -dbType -DBTYPE 不幸的是,对于这个项目,我仅限于使用标志库。Go标志区分大小写,因此默认情况下无法执行您想要的操作。 但您可以设置允许用户输入的值,并让它们指向同一变量,即: const

是否仍然可以忽略Go标志的大小写(不区分大小写)

我想让我的程序尽可能的宽容和用户友好

 dbType := flags.String( "dbType", "", "The `dbType` to deploy. )
如果用户输入以下任一项,我希望初始化此标志的值:

 -dbtype
 -dbType
 -DBTYPE

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

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)
...

用小写字母定义您的标志

dbType := flags.String( "dbtype", "", "The `dbType` to deploy. )
然后将您的标志字符串设为.ToLower()(假设您的标志是第二个参数):


标准库
flag
包是区分大小写的。@Adrian:既然是这样(我真的不想把它当作双关语),我认为大多数Go程序都有区分大小写的标志名,在类Unix系统下使用的大多数程序也是如此。我怀疑违反这一惯例是否对用户友好。(我想知道Windows程序的约定,但我不想做任何研究。)典型的经典Windows命令行不区分大小写,但通常是大写的。标志是单个字符,由前斜杠而不是破折号表示。现代powershell脚本使用了更多类似unix的标志,但仍然不区分大小写。
args[1] = strings.ToLower(args[1])
err := flagSet.Parse(args[1:])