首页 > 其他分享 >Golang flag包:命令行参数解析入门代码示例

Golang flag包:命令行参数解析入门代码示例

时间:2023-12-07 10:06:20浏览次数:29  
标签:name 示例 age Golang flag 参数 命令行 变量


以下是一个示例代码,展示了如何使用 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)
}

在这个示例中,我们首先导入了需要使用的包,包括 flagfmt

然后,我们定义了几个变量,用于存储命令行参数的值。name 是一个字符串类型的变量,age 是一个整数类型的变量,isAdmin 是一个布尔类型的变量。

接下来,我们使用 flag.StringVar()flag.IntVar() 函数将命令行参数与对应的变量进行绑定。这些函数接受变量的地址作为第一个参数,命令行标记的名称作为第二个参数,变量的默认值作为第三个参数,以及帮助信息的字符串作为第四个参数。

然后,我们调用 flag.Parse() 函数来解析命令行参数。这将扫描命令行中的标记和参数,并将它们与之前绑定的变量进行关联。

最后,我们打印出解析后的参数值,以验证解析是否正确。在这个示例中,我们打印了 nameageisAdmin 变量的值。

要运行这个示例,可以在命令行中使用类似以下的命令:

go run main.go -name John -age 30 -admin

这将输出以下内容:

Name: John
Age: 30
Is Admin: true

在命令行中,我们使用 -name-age-admin 标记来指定相应的参数值。-admin 标记没有后面的参数值,因此默认为 true

通过使用 flag 包,我们可以轻松地处理命令行参数,并根据需要进行相应的逻辑处理。


标签:name,示例,age,Golang,flag,参数,命令行,变量
From: https://blog.51cto.com/zhangxueliang/8718140

相关文章

  • Golang flag包:nginx命令行参数解析代码示例
    flag-命令行参数解析在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在go标准库中提供了一个包:flag,方便进行命令行解析。注:区分......
  • Golang 泛型及代码示例
    以下是一个包含Golang泛型代码示例的文件:packagemainimport("fmt""sort")//泛型函数funcAdd[Tany](x,yT)T{returnx+y}funcmain(){//将两个整数相加fmt.Println(Add(1,2))//3//将两个字符串相加fmt.Println(Add(......
  • Golang unsafe.Pointer类型代码示例
    指针类型基本代码示例在Go语言中,指针类型用于存储变量的内存地址。通过指针,我们可以直接访问和修改变量的值。下面是一些关于指针类型的示例代码:packagemainimport"fmt"funcmain(){//声明一个整数变量并赋值num:=10fmt.Println("原始值:",num)/......
  • Golang unsafe.Sizeof 函数代码示例
    在Go语言中,可以使用unsafe.Sizeof()函数来获取变量或类型的大小(以字节为单位)。下面是一个示例代码,演示如何使用unsafe.Sizeof()函数:packagemainimport( "fmt" "unsafe")typePersonstruct{ Namestring Ageint}funcmain(){ varnumint varstrstring......
  • Golang runtime包代码示例
    在Go中,runtime包提供了与运行时系统(runtimesystem)交互的功能。这个包包含了一些底层的运行时操作,例如内存管理、协程管理、垃圾回收等。以下是一个简单的示例代码,展示了runtime包的一些常见用法:packagemainimport( "fmt" "runtime")funcmain(){ //获取Go程序......
  • Golang GC是标记清除GC算法吗?与复制算法、标记整理算法的区别
    Golang(Go语言)使用的是标记清除(MarkandSweep)的垃圾回收(GC)算法。下面是标记清除算法与复制算法以及标记整理算法之间的区别和优势:标记清除算法(MarkandSweep):工作原理:标记清除算法分为标记和清除两个阶段。首先,从根对象(如全局变量、堆栈中的对象)开始,标记所有可以访问到的对象。然后......
  • Golang标准库:非类型安全操作(Arbitrary 类型 Pointer 类型 Sizeof 函数 Offsetof 函数)
    unsafe库徘徊在“类型安全”边缘,由于它们绕过了Golang的内存安全原则,一般被认为使用该库是不安全的。但是,在许多情况下,unsafe库的作用又是不可替代的,灵活地使用它们可以实现对内存的直接读写操作。在reflect库、syscall库以及其他许多需要操作内存的开源项目中都有对它的引用。un......
  • 通过PowerShellPlus示例脚本学习PowerShell之-通过SMO获取SQLServer数据库
    ##=====================================================================##Title:Get-MSSQL-DB-UsingSMO##Description:ShowalldatabasesusingSMOforagivenserverinstance##Author:Idera##Date:1/28/2008##Input:-s......
  • golang的try catch 方式
    列子如下:main.go 1try.Catch(func(errerror){2//异常处理3fmt.Println(err)4}).Then(func()error{5//执行代码16//...78//如果有异常即抛出异常9returnnil10}).Then(func()error{11//执行代码212/......
  • cerbos golang 内部policy check 处理简单说明
    主要是想尝试实现一个rust的check方法,所以先研究下golang的内部实现CheckResourcesfunc(cs*CerbosService)CheckResources(ctxcontext.Context,req*requestv1.CheckResourcesRequest)(*responsev1.CheckResourcesResponse,error){log:=logging.......