flag 包解析命令行参数 | 学习笔记

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习 flag 包解析命令行参数

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程flag 包解析命令行参数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9735


flag 包解析命令行参数


一、flag 包用来解析命令行参数

说明:前面的方式是比较原生的方式,对解析参数不是特别的方便,特别是带有指定参数形式的命令行。

比如:cmd>main.exe -fci/aaa.txt -p 200 -u root 这样的形式命令行,go 设计者给我们提供了 flag 包,可以方便的解析命令行参数,而且参数顺序可以随意请编写一段代码,可以获取命令行各个参数,

D:woproject\src vo_code>test.exe -u root -pud root -h 192.168.8.1 _port 3306

User = root

Pwd = root

Host = 192.168.0.1

用这 os.Args这个切片来获取参数的缺点是必须严格按照一定顺序进行。在实际的开发中  Mexico  或者其他的数据库MYSQL 在登录的时候,它往往是这样写的

D:\goproject src\o-code`hapter14\argsdemo>mysql -u roo

1 12345 -h localhost -P 3306在很多这个程序里面常用这种用法,前面是一个应用程序后边儿用一个 - 来指定参数简而言之,用前面有个指定参数的一个标识,后面数值才是这个参数的值指定参数的优点就是顺序就不受约束,-u root可以写在前面,也可以写到后面 flag 包来解析命令行参数,举例说明前面的方式,它是比较原生态的。对解析参数,不是特别方便,特别是带有指定参数形式的命令行比如:D:woproject\src vo_code>test.exe -u root -pud root -h 192.168.8.1 _port 3306, 要求通过这个指定的参数,来获取到需要的参数值,通过这个指令参数来拿到后面真正的参数值,这种用法好处参数顺序可以随意可以支持根据指定参数来获取参数值。

案例:

package main

import (

"fmt"

"flag”

func main()f

//定义几个变量,用于接收命令行的参数值

var user string

var pud string

var host string

var port int

//&user 就是接收用户命令行中输入的-u 后面的参数值

/1"u”,就是-u 指定参数

//*"。默认值

1/"用户名,默认为空”说明

flag.StringVar(&user,"u","',”用户名,默认为空”)

flag.StringVar(&pwd。"pwd"。"",“密码,默认为空”)

flag.StringVar(&host,"h","localhost","主机名,默认为 Localhost")

flag.Intvar(&port,"port","3306","端口号,默认为3306")

//这里有一个非常重要的操作,转换,必须调用该方法

flag.Parse()

//输出结果

fmt.Printf("user=%v pwd=%v host-%v port=%",

user, pwd, host, port)

通过这个指令参数来获取参数值,来代码实现。打开文档,点击 flag,实现了命令行参数的解析

func Parse

func Parse()

 0S.Args (1]中解析注册的 Mlag。必须在所到都注册好而来访问其值时现行。未注册知使用 flag -help 时,会返回 ErrHelp.

func IntVar

func Intvar(p *int, name string, value int, ueuge string)

Intvar 用指定的各称、默认值、使用信息注册一个 int 类型 Mag,并将 flag 的值保存到 p 指向的变量。

Localhost 是主机名总经理默认为 localhost。默认意思是没有指定这个参数,house 的默认就是 localhostFlag 端口 inter 类型用的是 VR后面必须调用转换方法。打开文档,点击 flag点击覆盖下面有个 PLC。往下 lawyer。往下走看这里点一下从这个数组里面解析注册的 flag。必须在所有 flag 都注册好后,才能访问执行。简而言之,就是必须进行转换,才能真正的把这个切片里面的这些值转换成功

演示:

D:goproject\src go_code^chapter14\F lagdemo>test.exe -u root -pud 123456 -h 127.0.0.5 -port 8088

user-root pwd=123456 host=127.0.0.5 port-8080

D:\goproject\src\o_codeNchapter14\flagdemo>test.exe -pwd 123456 -h 127.0.0.5 -port 8088 -u tonjack

user-tomjack pwd=123456 host-127.0.0.5 port-8080

D:\goproject\src\go_code chapter14\lagdemo>test.exe -pwd 123456 -h 127.0.0.5 -u tomjack

user=tomjack pwd=123456 host=127.0.0.5 port=3306

相关文章
|
16天前
|
JSON 自然语言处理 Java
OpenAI API深度解析:参数、Token、计费与多种调用方式
随着人工智能技术的飞速发展,OpenAI API已成为许多开发者和企业的得力助手。本文将深入探讨OpenAI API的参数、Token、计费方式,以及如何通过Rest API(以Postman为例)、Java API调用、工具调用等方式实现与OpenAI的交互,并特别关注调用具有视觉功能的GPT-4o使用本地图片的功能。此外,本文还将介绍JSON模式、可重现输出的seed机制、使用代码统计Token数量、开发控制台循环聊天,以及基于最大Token数量的消息列表限制和会话长度管理的控制台循环聊天。
112 7
http数据包抓包解析
http数据包抓包解析
|
4月前
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。
|
4月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
314 2
|
3月前
|
存储 缓存 并行计算
yolov5的train.py的参数信息解析
这篇文章解析了YOLOv5的`train.py`脚本中的参数信息,详细介绍了每个参数的功能和默认值,包括权重路径、模型配置、数据源、超参数、训练轮数、批量大小、图像尺寸、训练选项、设备选择、优化器设置等,以便用户可以根据需要自定义训练过程。
56 0
http数据包抓包解析课程笔记
http数据包抓包解析课程笔记
|
5月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
440 0
|
5月前
|
存储 Go UED
精通Go语言的命令行参数解析
【8月更文挑战第31天】
56 0
|
5月前
|
XML 存储 JavaScript
xml介绍与解析,及xml库包使用
xml介绍与解析,及xml库包使用
49 0
|
5月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
181 0

推荐镜像

更多