以下是一个示例代码,展示了如何使用 flag
包处理命令行参数:
package main
import (
"flag"
"fmt"
)
func main() {
// 定义命令行参数对应的变量
var name string
var age int
var isAdmin bool
// 绑定命令行参数与变量
flag.StringVar(&name, "name", "", "Enter your name")
flag.IntVar(&age, "age", 0, "Enter your age")
flag.BoolVar(&isAdmin, "admin", false, "Are you an admin?")
// 解析命令行参数
flag.Parse()
// 打印解析后的参数值
fmt.Println("Name:", name)
fmt.Println("Age:", age)
fmt.Println("Is Admin:", isAdmin)
}
在这个示例中,我们首先导入了需要使用的包,包括 flag
和 fmt
。
然后,我们定义了几个变量,用于存储命令行参数的值。name
是一个字符串类型的变量,age
是一个整数类型的变量,isAdmin
是一个布尔类型的变量。
接下来,我们使用 flag.StringVar()
和 flag.IntVar()
函数将命令行参数与对应的变量进行绑定。这些函数接受变量的地址作为第一个参数,命令行标记的名称作为第二个参数,变量的默认值作为第三个参数,以及帮助信息的字符串作为第四个参数。
然后,我们调用 flag.Parse()
函数来解析命令行参数。这将扫描命令行中的标记和参数,并将它们与之前绑定的变量进行关联。
最后,我们打印出解析后的参数值,以验证解析是否正确。在这个示例中,我们打印了 name
、age
和 isAdmin
变量的值。
要运行这个示例,可以在命令行中使用类似以下的命令:
go run main.go -name John -age 30 -admin
这将输出以下内容:
Name: John
Age: 30
Is Admin: true
在命令行中,我们使用 -name
、-age
和 -admin
标记来指定相应的参数值。-admin
标记没有后面的参数值,因此默认为 true
。
通过使用 flag
包,我们可以轻松地处理命令行参数,并根据需要进行相应的逻辑处理。