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

相关文章
|
3月前
|
域名解析 网络协议 安全
在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
|
2月前
|
Python
命令行解析工具 argparse
命令行解析工具 argparse
42 14
|
3月前
|
存储 Go UED
精通Go语言的命令行参数解析
【8月更文挑战第31天】
36 0
|
3月前
|
SQL 分布式计算 算法
【python】python指南(二):命令行参数解析器ArgumentParser
【python】python指南(二):命令行参数解析器ArgumentParser
36 0
|
3月前
|
Go
【go笔记】使用标准库flag解析命令行参数
【go笔记】使用标准库flag解析命令行参数
|
3月前
|
Python
python命令行解析模块argparse
python命令行解析模块argparse
|
4月前
|
存储 Python 容器
`click`是一个用于构建命令行接口的Python包,它提供了简单、可组合的命令行解析器。
`click`是一个用于构建命令行接口的Python包,它提供了简单、可组合的命令行解析器。
|
6月前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
54 2
|
6月前
|
存储 Linux Android开发
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
647 2
|
6月前
|
机器学习/深度学习 编解码 API
FFmpeg命令行解析
FFmpeg命令行解析
357 1

推荐镜像

更多