GoLong的学习之路(十二)语法之标准库 flag的使用

news2024/11/18 3:28:20

上回书说到,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是一个[]string
	if 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() //返回使用的命令行参数个数

关于命令行参数的问题具体可以看:李文周的博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI口语APP的实现

AI口语应用程序是一种借助人工智能技术,旨在帮助用户提高口语能力、练习语言技能以及进行交流和学习语言的应用程序。这类应用通常提供以下主要功能,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交…

Ansys Speos | SPEOS 在HUD杂光分析中的应用

概述 随着汽车智能座舱的普及,HUD的装车率也随之增加,未来也可能会成为车内座舱的标配。而HUD是一个由光学,机械,电子,软件组成的复杂的高科技产品,其所在的汽车座舱是很复杂的环境。我们需要对HUD进行诸如…

2023年05月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 可以对Python代码进行多行注释的是?( ) A: # B: " " C: ‘’’ ‘’’…

Java关于实例对象调用静态变量和静态方法问题

直接去看原文 原文链接:Java关于实例对象调用静态变量和静态方法问题_java对象可以调用static方法吗_骑个小蜗牛的博客-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 实例…

2.13每日一题(根号下的定积分及去绝对值的定积分)

1、用三角函数的公式化1及二倍角公式将sinx化掉,构成完全平方公式 2、去根号,注意去根号要加绝对值, 3、通过区间比较sinx、cosx的大小去绝对值

vscode 保存 “index.tsx“失败: 权限不足。选择 “以超级用户身份重试“ 以超级用户身份重试。

vscode 保存 "index.tsx"失败: 权限不足。选择 “以超级用户身份重试” 以超级用户身份重试。 操作:mac在文件夹中创建文件,sudo 创建umiJs项目 解决:修改文件夹权限 右键文件夹

浮点数的表示与运算

一、浮点数的表示 1、规格化浮点数的特点 2、浮点数表示

C#上位机序列10: 批量读写+点对点更新+数据类型处理

一、源码结构 二、运行效果 三、源码解析 PLC批量读写点对点更新数据类型处理 优点:根据数据类型,判定监听的地址范围(40120_int 监听两个word:40120 40121;40130_long 监听四个word:40130 40131 40132 4…

运营商光纤资源管理:管理工具的力量

随着通信信息化水平发展,光纤资源已成为现代通信网络的核心要素之一。然而,管理却面临诸多挑战,尤其对于电信运营商而言,面对庞大而复杂的光纤网络资源,怎样做到既不浪费现有资源,又能满足未来业务需求&…

18亿欧元大动作,法国瞄准实现量子飞跃

Quobly 正在开发一种容错量子处理器(图片来源:网络) 2021年1月,马克龙总统宣布了法国国家量子计算计划,并将为该技术投入高达18亿欧元。 “量子战略至关重要,”马克龙在量子研究中心巴黎萨克雷大学宣布该…

概念解析 | 功率放大器与低噪声放大器:一场关于信号放大的对比

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:功率放大器(PA)与低噪声放大器(LNA)。 功率放大器与低噪声放大器:一场关于信号放大的对比 一、背景介绍 在现代的通信系统中,功率放大器 (Power Amplifier, PA)与低噪声放…

集卡实习总结

规则控制面板 (1)什么是低代码? 低代码 是借助低代码工具的情况下,开发人员编写少量代码快速开发出企业级应用系统,并帮助企业团队进行数字化转型。低码开发平台借助一整套功能组件,功能分类包括&#xff…

如何查看员工电脑操作记录

作为企业管理者,查看员工电脑操作记录可以帮助了解员工的工作情况和电脑使用情况,以便更好地进行管理。以下是一些查看员工电脑操作记录的方法: 一、电脑监控软件系统 这些软件系统可以实时监控员工电脑的操作情况,包括网页浏览、…

DeOldify 接口化改造 集成 Flask

类似的图片修复项目 GFPGAN 的改造见我另一篇文 https://blog.csdn.net/weixin_43074462/article/details/132497146 DeOldify 是一款开源软件,用于给黑白照片或视频上色,效果还不错。 安装部署教程请参考别的文章,本文基于你给项目跑通&…

极米科技H6 Pro 4K、H6 4K高亮定焦版——开启家用投影4K普及时代

智能投影产业经过几年发展,市场规模正在快速扩大。洛图数据显示,预计今年中国投影出货量有望超700万台,2027年达950万台,可见智能投影产业规模将逐渐壮大,未来可期。2023年,投影行业呈现出全新面貌&#xf…

Linux部署Redis Cluster高可用集群(附带集群节点添加删除以及槽位分配操作详解)

目录 一、前言二、下载安装Redis2.1、选择需要安装的Redis版本2.2、下载并解压Redis2.3、编译安装Redis 三、部署Redis Cluster高可用集群3.1、准备配置文件3.2、启动Redis服务3.3、创建Redis集群3.4、查看集群关系3.5、连接集群Redis进行数据读写以及重定向测试3.6、故障转移和…

数据库设计原则

一、前言 在平时的web系统开发中,数据库是必不可少的一部分,没有了数据库,程序处理的数据就不知如何更好安放。然而数据库没有很好的设计,使用起来也是很不好用的。本节就介绍一下数据库得到基础知识和设计原则。 二、为什么需要…

NEFU离散数学实验3-递推方程

相关概念 递推方程是指一种递归定义,它将问题拆分成更小的子问题,并使用这些子问题的解来计算原问题的解。离散数学中,递推方程通常用于描述数列、组合问题等。 以下是一些递推方程相关的概念和公式: 1. 递推公式:递推…

【嵌入式开发 Linux 常用命令系列 9 -- linux系统终端命令提示符设置(PS1)】

文章目录 Linux PS1 介绍PS1 纯文本和特殊的转义序列PS1 颜色设置 Linux PS1 介绍 在Linux中,PS1(Prompt String 1)是一个环境变量,用来定义shell命令提示符的显示内容和格式。当你在终端中输入命令时,PS1定义的就是那…

共享WiFi贴推广项目怎么操作?

共享WiFi贴推广项目是一种热门的商业共享服务项目,旨在为用户提供便捷的网络连接,并为代理商带来可观的收益。在本文中,我们将探讨该项目的操作方法,帮助你在推广共享WiFi贴时取得成功。 首先,你需要选择适宜的商户或商…