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 // 得到传的参数
golang 之 flag的更多相关文章
- golang 之 flag.String
无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作.如:./main -b /home/backupdir -d true 那么如何更好 ...
- golang的Flag和Pflag
Flag和Pflag类似于python的argparse:解析命令行 flag是golang自带的包:github.com/spf13/pflag 参考:https://o-my-chenjian.c ...
- Go_16:GoLang中flag标签使用
正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包.在 Golang 语言中也为我们提供了相应 ...
- GoLang中flag标签使用
正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包.在 Golang 语言中也为我们提供了相应 ...
- golang的flag包源码解析与使用
当我们 import package时,package内的全局常量和全局变量会进行初始化,并且紧接着init函数会执行.因此我们先看一下flag包的全局常量和全局变量. 一.flag包的全局常量.全 ...
- Go内置库模块 flag
import "flag" flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个set集合.每条都有各自的状态参数. 在使用flag时正常流程: 1. ...
- Go基础篇【第6篇】: 内置库模块 flag
import "flag" flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个set集合.每条都有各自的状态参数. 在使用flag时正常流程: 1. ...
- golang---命令源码文件与命令行参数
命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的. import "flag" flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个se ...
- golang flag
本文主要对golang环境下命令行的解析进行了相关的总结.命令行在C下有getopt等函数, 在golang下提供了更为方便的处理方法. 1.命令行参数获取:命令行获得可通过os.Args参数, Ar ...
随机推荐
- nginx 配置虚拟主机( 基于域名 )
一.创建网站目录及文件: [root@localhost data]# tree /data /data └── wwwroot ├── www..com │ └── index.html └── ...
- 【cf比赛记录】Codeforces Round #601 (Div. 2)
Codeforces Round #601 (Div. 2) ---- 比赛传送门 周二晚因为身体不适鸽了,补题补题 A // http://codeforces.com/contest/1255/p ...
- win10+py3.6+cuda9.0安装pytorch1.1.0
参考:清华源失效后如何安装pytorch1.01 GPU版本的安装指令为: conda install pytorch torchvision cudatoolkit=9.0 -c pytorch 这 ...
- 【Beta】“北航社团帮”发布声明——小程序v2.0与网页端v1.0
目录 Beta版本新功能 小程序v2.0新功能 新功能列表 功能详情图 新功能动图展示 网页端v1.0功能 登录方式 社团信息的修改 新闻的录入和修改 活动的录入和修改 这一版修复的缺陷 Beta版本 ...
- 删除DB2实例下的数据库
db2ilist 查看所有实例 db2 get instance 查看当前连接的实例 db2 list db directory 查看当前实例下连接的数据库 ==================== ...
- 【转】解决chrome浏览器不支持audio和video标签的autoplay自动播放
声音无法自动播放这个在 IOS/Android 上面一直是个惯例,桌面版的 Safari 在 2017 年的 11 版本也宣布禁掉带有声音的多媒体自动播放功能,紧接着在 2018 年 4 月份发布的 ...
- Vue ElementUI主页面搭建和导航栏使用,并在刷新页面的时候选中状态消失的问题解决
<template> <div style="height:100%;width: 100%; padding:0 auto; margin: 0 auto;"& ...
- 使用atom 将 markdown 转换成pdf
atom 下载 atom 可以直接下载 : https://atom.io/ 打开下面链接 下载上面图中绿色版本的 atom 下载完成之后,解压,可以直接打开.这样可以避免 windows 下用安装包 ...
- (转nginx不浏览直接下载文件的解决方法
原文:https://www.zhan200.com/xwt/39.html 如果nginx配置不对,就会造成部分文件,在浏览器中不是直接预览,而是进行了下载.修改的方法是修改配置文件.具体解决方法如 ...
- osgb文件过大,可以通过Compressor=zlib对纹理进行压缩
osg::ref_ptr<osgDB::ReaderWriter::Options> options = new osgDB::ReaderWriter::Options; options ...