GoLang中flag标签使用
2024-10-13 17:25:26
正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包。在 Golang 语言中也为我们提供了相应的功能,直接上代码,在代码中会做详细的解释,当前运行环境为:Go-1.8.1
package main import (
"flag"
"log"
"os"
) func usage() {
log.Fatalf("Usage: myProgram [-s server] [-t isShowTimeStamps] <subject> \n")
} func printMsg(message string) {
log.Printf("Received message is : %s \n", message)
} func main() {
//os.Args 提供原始命令行参数访问功能。注意:切片中的第一个参数是该程序的路径,并且 os.Args[1:]保存所有的的参数。
argsAll := os.Args
log.Println("argsAll: ", argsAll)
//取得对我们有意义的参数内容
argsUseful := os.Args[1:]
log.Println("argsUseful: ", argsUseful) /**
第一个参数:设置对应的标签名,可以通过该标签名来或得对应值
第二个参数:如果没有设置该标签,则采用这个值即该值为默认值
第三个参数:这个参数为帮助信息,一般用于help调用展示
*/
var message = flag.String("s", "default message", "it's user send message[help message]")
var showTime = flag.Bool("t", false, "Display timestamps") /**
格式化log输入内容,默认为:log.LstdFlags(底层等价:Ldate | Ltime), Ldate:2017/04/01 , Ltime:16:24:36,
Llongfile:全路径+执行文件+行数, Lshortfile:执行文件名+行数,还有几个其他不常用的,需要的话可以上官方文档查看
这里设置的0即取消log格式化输出,输出的内容和使用fmt包下的println()格式一样
*/
//log.SetFlags(0)
log.SetFlags(log.LstdFlags)
//初始化flag包中内置的匿名Usage函数,需要赋一个函数。当flag内部发生异常会调用其内部的Usage函数,继而再调用到我们自己定义的usage函数
flag.Usage = usage
//所有标志都声明完成以后,调用 flag.parse() 来执行命令行解析
flag.Parse() //用户没有任何参数输入则不得向下执行
args := flag.Args()
if len(args) < 1 {
usage()
} log.Println("message:", *message, ", showTime:", *showTime)
printMsg(*message)
最新文章
- .NET FRAMEWORK版本:4.0.30319; ASP.NET版本:4.6.118.0
- 织梦cms更新新建的栏目提示:DedeTag Engine Create File False:C:/phpStudy/WWW/
- *** missing separator. Stop.
- 简单的block
- 关于input全选反选恶心的异常情况
- MVC实现动态二级域名
- Nginx中的rewrite指令
- 只用js 实现的简约聊天框
- UpdateProgress使用
- 单服务员排队模拟100天matlab实现
- Android学习笔记:FrameLayout布局基础
- java学习笔记09--反射机制
- ReactNative环境搭建扩展篇——安装后报错解决方案
- Velocity(5)——#macro 指令
- 腾讯企业邮箱又一次隐藏了qq邮件列表的入口
- HTML5 CSS3 诱人的实例: 3D立方体旋转动画
- centos备份多个数据库
- 剑指offer7~10题
- 框架中如何根据fileupload工具包实现文件上传功能
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作