Go语言如何实现多命令行选项对应同一功能的单次调用?
解决
github.com/pborman/getopt多选项绑定同一变量的问题 你可以通过将多个选项绑定到同一个变量指针的方式,实现单次处理统一值的需求,不需要分别判断多个变量。具体做法是使用BoolLongVar(对应布尔类型)这类带Var后缀的方法,把不同的短选项、长选项都指向同一个变量:
package main import ( "fmt" "github.com/pborman/getopt" ) func main() { var isRecursive bool // 将四个选项都绑定到同一个isRecursive变量 getopt.BoolLongVar(&isRecursive, "recurse", 'r', "以递归方式运行") getopt.BoolLongVar(&isRecursive, "recursive", 'R', "以递归方式运行") getopt.Parse() fmt.Printf("递归模式是否开启: %t\n", isRecursive) }
这样不管用户输入-r、-R、--recurse还是--recursive,isRecursive都会被设为true,你只需要在后续逻辑中处理这一个变量即可,和Ruby里用单个块处理多选项的效果一致。
如果是其他类型的选项(比如字符串、整数),也可以用对应的*Var方法(如StringLongVar、IntLongVar)来实现多选项绑定同一变量的操作。
内容的提问来源于stack exchange,提问作者HippoMan
相关产品推荐
相关产品推荐

