设为首页 加入收藏

TOP

pflag如何使用(一)
2019-03-15 10:07:56 】 浏览:103
Tags:pflag 如何 使用

1 为何我对这个库感兴趣呢?

因为我想看看Kubernetes的源码,Kubernetes,Hugo啥的都是那这个解析的命令行参数

2 安装

go get github.com/spf13/pflag

3 我自己写的例子

 1 package main
 2 
 3 import (
 4    "github.com/spf13/pflag"
 5    "net"
 6    "fmt"
 7    "time"
 8 )
 9 
10 func pflagDefine() {
11    //64位整数,不带单标志位的
12    var pflagint64 *int64 = pflag.Int64("number1", 1234, 
 
			
lor: #800000;">"
this is int 64, without single flag") 13 14 //64位整数,带单标志位的 15 var pflagint64p *int64 = pflag.Int64P("number2", "n", 2345, "this is int 64, without single flag") 16 17 //这种可以把变量的定义和变量取值分开,适合于struct,全局变量等地方 18 var pflagint64var int64 19 pflag.Int64Var(&pflagint64var, "number3", 1234, "this is int64var") 20 21 //上面那一种的增加短标志位版 22 var pflagint64varp int64 23 pflag.Int64VarP(&pflagint64varp,"number4", "m", 1234, "this is int64varp") 24 25 26 27 //slice版本,其实是上面的增强版,但是支持多个参数,也就是导成一个slice 28 var pflagint64slice *[]int64 = pflag.Int64Slice("number5", []int64{1234, 3456}, "this is int64 slice") 29 30 //bool版本 31 var pflagbool *bool = pflag.Bool("bool", true, "this is bool") 32 33 //bytes版本 34 var pflagbyte *[]byte = pflag.BytesBase64("byte64", []byte("ea"), "this is byte base64") 35 36 //count版本 37 var pflagcount *int= pflag.Count("count", "this is count") 38 39 //duration版本 40 var pflagduration *time.Duration = pflag.Duration("duration", 10* time.Second, "this is duration") 41 42 //float版本 43 var pflagfloat *float64 = pflag.Float64("float64", 123.345, "this is florat64") 44 45 //IP版本 46 var pflagip *net.IP = pflag.IP("ip1", net.IPv4(192, 168, 1, 1), "this is ip, without single flag") 47 48 //mask版本 49 var pflagmask *net.IPMask= pflag.IPMask("mask", net.IPv4Mask(255,255,255,128),"this is net mask") 50 51 //string版本 52 var pflagstring *string= pflag.String("string", "teststring", "this is string") 53 54 //uint版本 55 var pflaguint *uint64 = pflag.Uint64("uint64", 12345, "this is uint64") 56 57 pflag.Parse() 58 fmt.Println("number1 int64 is ", *pflagint64) 59 fmt.Println("number2 int64 is ", *pflagint64p) 60 fmt.Println("number3 int64var is ", pflagint64var) 61 fmt.Println("number4 int64varp is", pflagint64varp) 62 fmt.Println("number5 int64slice is", *pflagint64slice) 63 fmt.Println("bool is ", *pflagbool) 64 fmt.Println("byte64 is ", *pflagbyte) 65 fmt.Println("count is ", *pflagcount) 66 fmt.Println("duration is ", *pflagduration) 67 fmt.Println("float is ", *pflagfloat) 68 fmt.Println("ip1 net.ip is ", *pflagip) 69 fmt.Println("mask is %s", *pflagmask) 70 fmt.Println("string is ", *pflagstring) 71 fmt.Println("uint64 is ", *pflaguint) 72 73 } 74 75 func main() { 76 pflagDefine() 77 78 }

说几个要点:

(1)Int64P比Int64多的是一个短标志位,注意:这里只能是一个字母

(2)pflagint64var比pflagint64多的是,可以导入一个指针参数而不是赋值。

这样的好处:可以把一些全局变量导入了,先声明,后导入

      &
编程开发网

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Go语言学习笔记(1)——Hello Worl.. 下一篇golang中GOPATH的简单理解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }