GoLong的学习之路(十二)语法之标准库 flag的使用
上回书说到,fmt的标准库的一些常用的使用函数。这次说flag的使用,以下这些库要去做了解。不然GG,Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。
文章目录
- os.Args
- flag包
- flag.Type()
- flag.TypeVar()
- flag.Parse()
- flag其他函数
os.Args
如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。
这个方法我在看的时候,有些懵逼,什么叫做获取命令行的参数,仔细一琢磨,发现简单而言就是在DOS控制台中的输入的一些值。这些就叫做获取命令行的参数
os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。
package main
import ("fmt""os"
)
//os.Args demo
func main() {//os.Args是一个[]stringif len(os.Args) > 0 {for index, arg := range os.Args {fmt.Printf("args[%d]=%v\n", index, arg)}}
}
将上面的代码执行go build -o "args_demo"编译之后(其实就是不用idea编辑器,通过最原始的方式,进行编译)

flag包
flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration
flag.Type()
flag.Type(flag名, 默认值, 帮助信息)*Type
例如我们要定义姓名、年龄、婚否三个命令行参数,我们可以按如下方式定义:
func main() {name := flag.String("name", "张三", "姓名")age := flag.Int("age", 18, "年龄")married := flag.Bool("married", false, "婚否")delay := flag.Duration("d", 0, "时间间隔")fmt.Println(*name)fmt.Println(*age)fmt.Println(*married)fmt.Println(*delay)fmt.Printf("%v", name)}

需要注意的是,此时name、age、married、delay均为对应类型的指针.
flag.TypeVar()
flag.TypeVar(Type指针, flag名, 默认值, 帮助信息)
例如我们要定义姓名、年龄、婚否三个命令行参数,我们可以按如下方式定义:
var name string
var age int
var married bool
var delay time.Duration
flag.StringVar(&name, "name", "张三", "姓名")
flag.IntVar(&age, "age", 18, "年龄")
flag.BoolVar(&married, "married", false, "婚否")
flag.DurationVar(&delay, "d", 0, "时间间隔")
此时就将值输入到了对应的字段中,只不过对比以前的有点点不同而已
flag.Parse()
通过以上两种方法定义好命令行flag参数后,需要通过调用flag.Parse()来对命令行参数进行解析。
支持的命令行参数格式有以下几种:
- -flag xxx (使用空格,一个-符号)
- –flag xxx (使用空格,两个-符号)
- -flag=xxx (使用等号,一个-符号)
- –flag=xxx (使用等号,两个-符号)
其中,布尔类型的参数必须使用等号的方式指定。
Flag解析在第一个非flag参数(单个"-“不是flag参数)之前停止,或者在终止符”–“之后停止。
感兴趣的可以去DOS界面中尝试
flag其他函数
flag.Args() 返回命令行参数后的其他参数,以[]string类型
flag.NArg() //返回命令行参数后的其他参数个数
flag.NFlag() //返回使用的命令行参数个数
关于命令行参数的问题具体可以看:李文周的博客
相关文章:
GoLong的学习之路(十二)语法之标准库 flag的使用
上回书说到,fmt的标准库的一些常用的使用函数。这次说flag的使用,以下这些库要去做了解。不然GG,Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 文章目录 os.Argsflag包flag.Type()flag.TypeVar(…...
mac git ssh
1.作用 1.不用账号密码拉取git项目 2.使用 1.检查是否生成ssh的公钥和私钥 命令: cd ~/.ssh表示没有 No such file or directory 2.如果没有就生成公钥和私钥 ssh-keygen -t rsa -C "帅哥***.com"后面的是git邮箱地址 然后一直按enter,…...
栈、共享栈、链式栈(C++实现)
文章目录 前言1. 栈的顺序存储(顺序栈)2. 栈的基本操作🍑 入栈操作🍑 出栈操作🍑 获取栈顶元素🍑 获取栈的长度🍑 判断是否为空栈🍑 判断栈是否满了🍑 打印栈内的元素&am…...
MySQL实战2
文章目录 主要内容一.回访用户1.准备工作代码如下(示例): 2.目标3.实现代码如下(示例): 二.如何找到每个人每月消费的最大天数1.准备工作代码如下(示例): 2.目标3.实现代码如下(示例)…...
【面试经典150 | 栈】简化路径
文章目录 Tag题目来源题目解读解题思路方法一:字符串数组模拟栈 其他语言python3 写在最后 Tag 【栈】【字符串】 题目来源 71. 简化路径 题目解读 将 Unix 风格的绝对路径转化成更加简洁的规范路径。字符串中会出现 字母、数字、/、_、. 和 .. 这几种字符&#…...
无线电编码和记录和静音检测器 PlayOutONE LiveStream 5.0
直播编码器,随处流式传输。LiveStream 应用程序的多色图案屏幕截图,显示一波进入,四路流出来,LiveStream是一站式应用程序,可让您的电台在需要的地方输出。 对音频进行编码以进行流式传输,使用您最喜欢的V…...
React中useEffect Hook使用纠错
引言 React是一种流行的JavaScript库,用于构建用户界面。它提供了许多强大的功能和工具,使开发人员能够轻松地构建交互式和可重用的组件。其中一个最常用的功能是React的useEffect Hook,它允许我们在函数组件中执行副作用操作。然而…...
0049【Edabit ★☆☆☆☆☆】【修改Bug代码】Buggy Code
0049【Edabit ★☆☆☆☆☆】【修改Bug代码】Buggy Code bugs language_fundamentals Instructions The challenge is to try and fix this buggy code, given the inputs true and false. See the examples below for the expected output. Examples has_bugs(true) // &qu…...
javaswing/gui的科学计算器
一个使用javajavaswing/gui的科学计算器程序。 支持加减乘除,函数运算,清空,退回等操作。 还支持进制运算。 源码下载地址 支持:远程部署/安装/调试、讲解、二次开发/修改/定制...
Chapter1:C++概述
此专栏为移动机器人知识体系的 C {\rm C} C基础,基于《深入浅出 C {\rm C} C》(马晓锐)的笔记, g i t e e {\rm gitee} gitee链接: 移动机器人知识体系. 1.C概述 1.1 C概述 计算机系统分为硬件系统和软件系统。 硬件系统:指组成计算机的电子…...
实战经验分享FastAPI 是什么
FastAPI 是什么?FastAPI实战经验分享  FastAPI 是一个先进、高效的 Python Web 框架,专门用于构建基于 Python 的 API。它是…...
Edge浏览器中常用的20个快捷键
Microsoft Edge,和许多其他网络浏览器一样,设有一系列的键盘快捷方式,旨在提高用户效率。以下是Edge浏览器的20个实用快捷键: Ctrl T - 打开一个新标签页。Ctrl W(或 Ctrl F4)- 关闭当前标签页。Ctrl …...
winscp显示隐藏文件
当前目录下有被隐藏的文件时,会在右下角看到 “已隐藏” 的字样,双击这个字样,就会显示被隐藏的文件和文件夹...
uniapp获取地理位置的API是什么?
UniApp获取地理位置的API是uni.getLocation。它的作用是获取用户的当前地理位置信息,包括经纬度、速度、高度等。通过该API,开发者能够实现基于地理位置的功能,如显示用户所在位置附近的商家、导航服务、天气查询等。 以下是一个示例&#x…...
【ARMv8 SIMD和浮点指令编程】NEON 通用数据处理指令——复制、反转、提取、转置...
NEON 通用数据处理指令包括以下指令(不限于): • DUP 将标量复制到向量的所有向量线。 • EXT 提取。 • REV16、REV32、REV64 反转向量中的元素。 • TBL、TBX 向量表查找。 • TRN 向量转置。 • UZP、ZIP 向量交叉存取和反向交叉存取。 1 DUP (element) 将…...
C#,数值计算——分类与推理,基座向量机的 Svmgenkernel的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { public abstract class Svmgenkernel { public int m { get; set; } public int kcalls { get; set; } public double[,] ker { get; set; } public double[] y { get; set…...
08.K8S高可用方案
K8S高可用方案 1、高可用部署方式 官方提供两种高可用实现方式: 堆叠etcd 拓扑,其中 etcd 节点与控制平面节点共存;外部 etcd 节点,其中 etcd 与控制平面在不同的节点上运行;1.1、堆叠 etcd 拓扑 主要特点: 每个 master 节点上运行一个 apiserver 和 etcd, etcd 只与本…...
MySQL实战1
文章目录 主要内容一.墨西哥和美国第三高峰1.准备工作代码如下(示例): 2.目标3.实现代码如下(示例): 4.相似例子代码如下(示例): 二.用latest_event查找当前打开的页数1.准备工作代码如下(示例&…...
关于A level的习题答案
CAIE考试局(也称为CIE) 的真题答案有本书叫做《A-level 数学历年真题全解》包含2015-2019的Paper1、Paper3、Paper4、Paper6 Further Mathematica cousebook这本书的最后有Answer但是没有过程 Edexcel考试局 书本末尾有简易答案。 但是具体答案在Sol…...
左神算法题系列:动态规划机器人走路
机器人走路 假设有排成一行的N个位置记为1~N,N一定大于或等于2 开始时机器人在其中的start位置上(start一定是1~N中的一个) 如果机器人来到1位置,那么下一步只能往右来到2位置; 如果机器人来到N位置,那么下一步只能往左来到N-1位…...
基于python的安全信息隐藏技术在数字图像和文本中的应用
一、系统概述 随着信息技术的快速发展,数据泄露与隐私保护问题日益严重。传统的加密技术虽然能有效保护数据的机密性,但在某些特定场合下,数据的“隐蔽性”同样至关重要。隐写术(Steganography)作为一种安全信息隐藏技…...
腾讯云推出“领域虾”CloudQ:把企业云上治理,装进你每天都在用的聊天框
好家伙,腾讯云又给龙虾市场上新了。最近,腾讯云官宣的 CloudQ IT 老师傅(全球首款 ITOM“领域虾”),直接把云上的技术难题给办了。你甚至都不用登录控制台、不用敲命令,在微信里聊聊天就能完成架构巡检、风…...
异步电机spwm变频仿真Matlab/simulink,三相逆变桥使用开关switch
异步电机spwm变频仿真Matlab/simulink,三相逆变桥使用开关switch在电力系统中,异步电机是一种非常重要的执行器,广泛应用于各种工业控制场景。而SPWM(空间相量调制)变频控制是一种高精度、高效率的调速控制方式&#x…...
4个步骤掌握python-for-android:Python移动应用跨平台部署指南
4个步骤掌握python-for-android:Python移动应用跨平台部署指南 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 1. 问题:Python移动开发…...
s2-pro部署案例:私有化部署保障语音数据不出域安全实践
s2-pro部署案例:私有化部署保障语音数据不出域安全实践 1. 项目背景与需求 在金融、医疗等行业中,语音数据往往涉及敏感信息,需要严格控制在内部网络中流转。某金融机构需要搭建内部语音合成系统,但面临以下核心需求:…...
OpenClaw+Phi-3-vision-128k-instruct数据标注:半自动生成图像标签训练集
OpenClawPhi-3-vision-128k-instruct数据标注:半自动生成图像标签训练集 1. 为什么需要半自动数据标注 去年我在做一个宠物品种识别项目时,最头疼的就是数据标注环节。手动给5000多张猫狗图片打标签,不仅耗时耗力,还容易因为疲劳…...
Intv_ai_mk11在人工智能教育中的应用:个性化学习伙伴
Intv_ai_mk11在人工智能教育中的应用:个性化学习伙伴 1. 教育领域的新助手 最近几年,人工智能在教育领域的应用越来越广泛。作为一款专门为教育场景设计的AI助手,Intv_ai_mk11正在改变传统学习方式。它不仅能解答学生问题,还能根…...
Pumba在Kubernetes中的实战部署:DaemonSet配置指南
Pumba在Kubernetes中的实战部署:DaemonSet配置指南 【免费下载链接】pumba Chaos testing, network emulation, and stress testing tool for containers 项目地址: https://gitcode.com/gh_mirrors/pu/pumba Pumba是一款强大的容器混沌测试工具,…...
思源宋体专业应用全攻略:从零开始掌握开源中文字体开发
思源宋体专业应用全攻略:从零开始掌握开源中文字体开发 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目寻找高质量中文字体而烦恼?思源宋体作为A…...
3分钟掌握Umi-OCR:让文字识别变得如此简单的免费离线工具
3分钟掌握Umi-OCR:让文字识别变得如此简单的免费离线工具 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国…...
