zoukankan      html  css  js  c++  java
  • 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  // 得到传的参数
    

      

  • 相关阅读:
    [不断更新中]模板
    Noip 2018 游记
    [luogu3067 USACO12OPEN] 平衡的奶牛群
    [luogu4127 AHOI2009] 同类分布 (数位dp)
    [luogu4571 JSOI2009] 瓶子和燃料 (数论)
    [luogu4056 JSOI2009] 火星藏宝图 (贪心 dp)
    [luogu3573 POI2014] RAJ-Rally (拓扑排序 权值线段树)
    常见的狄利克雷卷积(一篇很好的博客上看到的)
    cz_xuyixuan
    [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
  • 原文地址:https://www.cnblogs.com/flash55/p/11160858.html
Copyright © 2011-2022 走看看