golang 之 flag

针对官网对flag 的定义解释一堆,对与我来说看了许久只想获取它的用法时,特意去整理一下。能快速使用并掌握它。

查看flag源码大致定义几下几种格式

//定义一个字符串的变量
type string string
func String(name string, value string, usage string) *string

//定义一个int型变量
type int int
func Int(name string, value int, usage string) *int
//定义一个bool型变量
type bool bool
func Bool(name string, value bool, usage string) *bool

func Float64(name string, value float64, usage string) *float64

func Int64(name string, value int64, usage string) *int64

//在所有的变量参数被设置后需要进行一次解析才生效
func Parse()

//给指定的参数设置值
func Set(name, value string) error

//Flag结构体
type Flag struct {
        Name     string // name as it appears on command line
        Usage    string // help message
        Value    Value  // value as set
        DefValue string // default value (as text); for usage message
}

 官网对其也有两种定义方式。

flag.Xxx()

Xxx 可以是 Int、String,Bool 等;返回一个相应类型的指针,如:
var ip = flag.Int("flagname", 1234, "help message for flagname")结果返回指针类型

  • 第一个参数 :flag名称为flagname
  • 第二个参数 :flagname默认值为1234
  • 第三个参数 :flagname的提示信息

flag.XxxVar()

var flagValue int
flag.IntVar(&flagValue, "flagname", 1234, "help message for flagname")
  •  第一个参数 :接收flagname的实际值的
  •    第二个参数 :flag名称为flagname
  •    第三个参数 :flagname默认值为1234
  •    第四个参数 :flagname的提示信息

这种方式获取ip的值fmt.Println(ip)

当然也可以自定义取值,不过个人觉得提供的已经够用,想详细了解的童鞋可自行查看官网及源码。这里就不过多叙述

取值

定一个test.go文件

package main

import (
	"flag"
	"fmt"
)

//定义一个字符串变量,并制定默认值以及使用方式
var name = flag.String("name", "wang", "姓名")

//定义一个int型字符
var nums  = flag.Int("ins", 1, "ins nums")

func main() {
	// 上面定义了两个简单的参数,在所有参数定义生效前,需要使用flag.Parse()来解析参数
	flag.Parse()
	// 测试上面定义的函数
	fmt.Println("a string flag:",string(*name))
	fmt.Println("ins num:",rune(*nums))
}

 运行的时候需要注意的是如果不传参数就会取出默认值,传参就会得到传的值

go run test.go  // 取出默认值
go run test.go -ins 3 -name biaoge  // 得到传的参数

  

posted @ 2019-07-09 22:18  Dwyane.wang  阅读(1241)  评论(0编辑  收藏  举报