针对官网对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 // 得到传的参数

  

golang 之 flag的更多相关文章

  1. golang 之 flag.String

    无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作.如:./main -b /home/backupdir -d true 那么如何更好 ...

  2. golang的Flag和Pflag

    Flag和Pflag类似于python的argparse:解析命令行 flag是golang自带的包:github.com/spf13/pflag 参考:https://o-my-chenjian.c ...

  3. Go_16:GoLang中flag标签使用

    正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包.在 Golang 语言中也为我们提供了相应 ...

  4. GoLang中flag标签使用

    正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包.在 Golang 语言中也为我们提供了相应 ...

  5. golang的flag包源码解析与使用

    当我们 import  package时,package内的全局常量和全局变量会进行初始化,并且紧接着init函数会执行.因此我们先看一下flag包的全局常量和全局变量. 一.flag包的全局常量.全 ...

  6. Go内置库模块 flag

    import "flag" flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个set集合.每条都有各自的状态参数. 在使用flag时正常流程: 1.  ...

  7. Go基础篇【第6篇】: 内置库模块 flag

    import "flag" flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个set集合.每条都有各自的状态参数. 在使用flag时正常流程: 1.  ...

  8. golang---命令源码文件与命令行参数

    命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的. import "flag"  flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个se ...

  9. golang flag

    本文主要对golang环境下命令行的解析进行了相关的总结.命令行在C下有getopt等函数, 在golang下提供了更为方便的处理方法. 1.命令行参数获取:命令行获得可通过os.Args参数, Ar ...

随机推荐

  1. CCF 201909-5 城市规划

    试题编号: 201909-5 试题名称: 城市规划 时间限制: 3.0s 内存限制: 512.0MB 问题描述: 几乎是Gym102222G的原版,详解见上一篇博文 /* 贡献+树形dp+01背包 * ...

  2. 统计学基础知识(二)---推断统计学(Inferential Statistics)

    推断统计学(Inferential Statistics):利用样本信息对总体进行估计和假设检验. 总体(population):在一个特定研究中所有感兴趣的个体组成的集合. 样本(sample):总 ...

  3. 【JZOJ6246】【20190627】B

    题目 求逆续对个数为\(k\)的\(n\)阶排列个数\(mod \ 1e9+7\) $1 \le n  ,  k \le 10^5 $ 题解 $f_{i,j} = \sum_{k=0}^{i-1} f ...

  4. mac 搭建Java Spring boot 环境(eclipse)

    安装 下载安装Springboot 安装完成后,创建项目 1. 2. 3. 完成创建!

  5. [技术博客] 【vagrant】硬盘扩容

    同样,这也是少昂早年走过的坑,这里直接贴出少昂个人博客链接:https://www.cnblogs.com/HansBug/p/9447020.html PS:有一位经验丰富的后端大佬坐镇指挥是多么幸 ...

  6. Gamma阶段第二次scrum meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...

  7. 009 webpack将ES高级语法进行装换

    一:ES高级转换 1.main.js中的js不能解析 // js的主要入口 import $ from 'jquery' import './css/index.css' import './css/ ...

  8. JavaScript 工厂模式

    //工厂 function FruitMaker() { //function 后不带方法名,这里cococola未定义,make return时,返回 FruitMaker.cococola thi ...

  9. 【C#】使用C# 读取Http的Post数据

    private string Post(string num) { Encoding myEncoding = Encoding.GetEncoding("gb2312"); // ...

  10. cp复制

    将Data文件复制到B目录下: cp -r /home/hp/Data /home/hp/B/