反正有没有忽略Go标志的大小写(不区分大小写)?
我想让我的程序尽可能原谅和用户友好。
dbType := flags.String( "dbType", "", "The `dbType` to deploy. )
如果用户输入以下任何内容,我希望初始化此标志的值:
-dbtype
-dbType
-DBTYPE
不幸的是,对于这个项目,我仅限于使用flag
库。
答案 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:])