首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一起处理启动时接收命令行参数

我们今天也来完成一个这样的参数管理。 go 语言官方提供了一个名为 flag 的包,用来处理启动时传入的参数,但是在取值的时候类型上不是很全。...go get github.com/spf13/pflag 二、基础使用 这里我定义两个变量由外部传入,分别是 string 类型的 name 和 int 类型的 age,代码如下: package...现在再传值试试: $ go run t.go -n 张三 -a 45 张三 45 这里的 -n 和 -a 分别是 对应里面的 StringP 和 IntP 的第二个参数,简写。...= nil { fmt.Println(err) } flag.Parse() fmt.Println(*pName,*iAge) 这样我们再执行 -h 就会发现看不到 age 的参数要求了。...四、一些总结 这库支持的取值类型有很多,基本覆盖了,我们常用的数据类型,和下一期我们要讲的 viper 结合起来用,基本解决了项目里面的配置问题。 大家可以试试用 pflag 实现一个四则运算,哈哈。

37810
您找到你想要的搜索结果了吗?
是的
没有找到

Go:命令行参数解析工具plag简介

一、核心能力 pflag 包与 flag 包的工作原理甚至是代码实现都是类似的,下面是 pflag 相对 flag 的一些优势: 支持更加精细的参数类型:例如,flag 只支持 uint 和 uint64...支持更多参数类型:ip、ip mask、ip net、count、以及所有类型的 slice 类型。 兼容标准 flag 库的 Flag 和 FlagSet:pflag 更像是对 flag 的扩展。...布尔类型参数 布尔类型参数有下面几种写法 --flag // 等同于 --flag=true --flag=value --flag value...除了最后一个 shorthand,其它的 shorthand 都必须是布尔类型参数或者是具有默认值的参数。...所以对于布尔类型参数和设置了 NoOptDefVal 的参数可以写成下面的形式: -o -o=true // 注意,下面的写法是不正确的 -o true 非布尔类型参数和没有设置 NoOptDefVal

10210

「Go工具箱」一个简单、易用的多错误管理包:go-multierror

Append 的第一个参数无论是 nil、multierror.Error 或者其他类型的 error,该函数都会返回一个 multierror.Error 类型的值,并将 Append 中第二个参数中的...ok { return nil } return u.Unwrap() } 如果参数 err 没有实现 Unwrap()函数,则说明是基础 error,直接返回 nil...调用者用 if 语句判断返回的错误是否为 nil(error 飞初始化的值)来判断错误是否存在。那么,在 multierror.Error 类型中,何时返回 nil,何时返回错误呢?...在 multierror.Error 的实例中,可以通过该类型的 ErrorOrNil 方法来返回错误nil。...如果参数中的 err 的类型就是 Error,那么就将 errs 错误加入到 Error 结构类型中的 Errors 切片中。

38010

万字带你轻松上手 Cobra 使用

在接下来的部分,我们将深入探讨如何使用 Cobra 构建各种类型的命令行工具,并分享一些最佳实践和技巧。...:= cmd.Flags().GetString("message") fmt.Println(message) },}func init() { cmd.Flags().StringP...处理错误和异常情况在命令行应用程序开发中,处理错误和异常情况是至关重要的。Cobra 提供了一种简单而有效的方式来处理错误和异常情况,使得我们能够及时捕获和处理可能出现的错误。...以下是一些处理错误和异常情况的常用技巧:错误处理:在执行命令时,您可以通过返回错误对象来指示执行过程中是否发生了错误。...= nil { return fmt.Errorf("error occurred: %v", err) } return nil},异常处理:除了错误处理外,您还可以使用 Go

61770

Go 编程 | 连载 06 - 基本数据类型转换(strconv)

_04 变量的类型是:%T, 值为:%v\n", err_05, float_data_05, float_data_05) } 执行上述代码,输出结果如下: 转换错误信息:, 转换后 float_data..._01 变量的类型是:float64, 值为:3.14 转换错误信息:, 转换后 float_data_02 变量的类型是:float64,值为:3 转换错误信息:strconv.ParseFloat...: parsing "stark": invalid syntax, 转换后 float_data_03 变量的类型是:float64 转换错误信息:, 转换后 float_data_04 变量的类型是...:float64, 值为:NaN 转换错误信息:, 转换后 float_data_04 变量的类型是:float64, 值为:+Inf ParseFloat() 函数可以识别 "NaN" 并转换为...ParseInt() 函数返回两个值,第一个是 int64 类型的整数,第二个是转换过程中的错误,如果 err 为 nil,说明转换成功。

33610

Go语言学习之旅 3 - 方法与接口

不过你可以为结构体类型定义方法。 方法就是一类带特殊的 接收者 参数的函数。...接口值 PS:其实就是类似 java 的接口引用,可以当参数传递,通过它实现面向对象的多态。 接口值保存了一个具体底层类型的具体值。 接口值调用方法时会执行其底层类型的同名方法。 接口也是值。...它们可以像其它值一样传递,接口值可以用作函数的参数或返回值 底层值为 nil 的接口值 即便接口指向的值为 nil,方法仍然会被 nil 接收者调用。...调用方法会产生运行时错误,因为不知调用哪个(方法/函数)。 空接口 像 interface{} 。指定了 0个方法的接口,被称为 空接口。空接口可保存任何类型的值。...nil 来进行错误处理。

45200

Cobra 使用简要(万字带你轻松上手 Cobra 使用)

在接下来的部分,我们将深入探讨如何使用 Cobra 构建各种类型的命令行工具,并分享一些最佳实践和技巧。...cmd.Flags().GetString("message") fmt.Println(message) }, } func init() { cmd.Flags().StringP...处理错误和异常情况 在命令行应用程序开发中,处理错误和异常情况是至关重要的。Cobra 提供了一种简单而有效的方式来处理错误和异常情况,使得我们能够及时捕获和处理可能出现的错误。...以下是一些处理错误和异常情况的常用技巧: 错误处理:在执行命令时,您可以通过返回错误对象来指示执行过程中是否发生了错误。...= nil { return fmt.Errorf("error occurred: %v", err) } return nil }, 异常处理:除了错误处理外,您还可以使用

94210

《Go语言程序设计》读书笔记(二)函数

如果两个函数形式参数列表和返回值列表中的变量类型一一对应,那么这两个函数被认为有相同的类型和标识符。...nil意味着函数运行成功,non-nil表示失败。对于non-nil的error类型,我们可以通过调用error的 Error函数或者输出函数获得字符串类型错误信息。...调用值为nil的函数值会引起panic错误: var f func(int) int f(3) // 此处f的值为nil, 会引起panic错误 函数值可以与nil比较: var f func(int...Printf首先接收一个的必备参数,之后接收任意个数的后续参数。 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“...”,这表示该函数会接收任意数量的该类型参数。...Go的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,如数组访问越界、空指针引用等。

41710

Go函数及与函数相关机制 【Go语言圣经笔记】

正如hypot一样,如果一组形参或返回值有相同的类型,我们不必为每个形参都写出参数类型。...如果两个函数形式参数列表和返回值列表中的变量类型一一对应,那么这两个函数被认为有相同的类型或标识符。形参和返回值的变量名不影响函数标识符,也不影响它们是否可以以省略参数类型的形式表示。...现在我们只需要明白error类型可能是nil或者non-nilnil意味着函数运行成功,non-nil表示失败。...对于non-nil的error类型,我们可以通过调用error的Error函数或者输出函数获得字符串类型错误信息。...在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“…”,这表示该函数会接收任意数量的该类型参数

1K20

Go语言核心36讲(Go语言进阶技术十三)--学习笔记

我们说过error类型其实是一个接口类型,也是一个 Go 语言的内建类型。在这个接口类型的声明中只包含了一个方法Error。Error方法不接受任何参数,但是会返回一个string类型的结果。...echo函数接受一个string类型参数request,并会返回两个结果。 这两个结果都是有名称的,第一个结果response也是string类型的,它代表了这个函数正常执行后的结果值。...第二个结果err就是error类型的,它代表了函数执行出错时的结果值,同时也包含了具体的错误信息。 当echo函数被调用时,它会先检查参数request的值。...其中的类型switch语句中有若干个case子句,分别对应了上述几个错误类型。当它们被选中时,都会把函数参数err的Err字段作为结果值返回。...如果它们都未被选中,那么该函数就会直接把参数值作为结果返回,即放弃获取潜在错误值。 只要类型不同,我们就可以如此分辨。但是在错误类型相同的情况下,这些手段就无能为力了。

30301
领券