go Flag应用

简介: 仿nginx命令行go语言些命令行程序是不错的选择,所以它可以轻松达到如上图类似nginx命令行的效果例子package mainimport ( "flag" "fmt" "os")//var...
仿nginx命令行

go语言些命令行程序是不错的选择,所以它可以轻松达到如上图类似nginx命令行的效果

例子

package main

import (
    "flag"
    "fmt"
    "os"
)

//
var (
    h bool

    v,V bool
    t,T bool
    q *bool

    s string
    p string
    c string
    g string

    n int64
)

func init(){
    flag.BoolVar(&h,"h",false,"this help")
    flag.BoolVar(&v,"v",false,"show version and exit")
    flag.BoolVar(&V,"V",false,"show version and configure options then exit")
    flag.BoolVar(&t,"t",false,"test configuration and exit")
    flag.BoolVar(&T,"T",false,"test configuration,dump it and exit")

    //另一中绑定方式
    q = flag.Bool("q",false,"suppress non-error messages during configuration testing")
    //注意’signal‘,默认是 -S string 有了`signal`之后,变为-s signal
    flag.StringVar(&s,"s","","send `signal` to a master")
    flag.StringVar(&p,"p","/usr/local/nginx","set configuration `file`")
    flag.StringVar(&c,"c","conf/nginx.conf","set confiruration `file`")
    flag.StringVar(&g,"g","conf/nginx.conf","set global `directives` out of configuraton file")

    flag.Int64Var(&n,"n",0,"set `number`")
    //改变默认的usage
    flag.Usage=Usage
}

func main() {
    flag.Parse()
    if h {
        flag.Usage()
    }
    if len(s)!=0{
        fmt.Println(s)
    }
    if n !=0{
        fmt.Println(n)
    }
}

func Usage() {
    fmt.Fprintf(os.Stderr,`nginx version: nginx/1.10.0 Usage:nginx [-hvVtTq] [-n number] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
`)
    flag.PrintDefaults()
}

先执行go build或go install 编译代码
执行FlagPrac -h 命令就可以输出帮助信息了
执行FlagPrac -s wang

执行FlagPrac -s wang

Flag 概述

参考:标准库—命令行参数解析FLAG

两种定义Flag方式

  • Flag.Xxx()

其中Xxx可以是Int,String等;返回一个相应类型的指针,如:

q = flag.Bool("q",false,"suppress non-error messages during configuration testing")
  • Flag.XxxVar()

将flag绑定到一个变量上,如:

flag.BoolVar(&h,"h",false,"this help")

另外还可以创建自定义flag,只要实现flag.Value接口即可

Flag解析

在所有的flag定义完成之后,可以通过调用flag.Prarse()进行解析,命令行flag的语法有如下三种方式:

  • flag //只支持bool类型
  • flag=x
  • flag x //只支持非bool类型

int类型可以是十进制、十六进制、八进制甚至是负数;bool类型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。Duration可以接受任何time.ParseDuration能解析的类型

类型和函数

ErrHelp:该错误类型用于当命令行指定了-help参数但没有定义时。
Usage:这是一个函数,用于输出所有定义了的命令行参数和帮助信息(usage message)。一般,当命令行参数解析出错时,该函数会被调用。我们可以指定自己的Usage函数,即:flag.Usage = func(){}

目录
相关文章
|
4月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
325 86
|
8月前
|
人工智能 监控 安全
Go通道机制与应用详解
本文全面解析了Go语言中的通道(Channel),从基础概念到高级应用,涵盖创建、操作、垃圾回收及实际场景使用。通道作为Go并发模型的核心,支持协程间安全高效的数据通信与同步。文章介绍了无缓冲和有缓冲通道的特性,以及发送、接收、关闭等操作,并探讨了`select`语句、超时处理、遍历通道等高级用法。此外,还深入分析了通道的垃圾回收机制,包括引用计数、生命周期管理和循环引用问题。最后通过数据流处理、任务调度和状态监控等实例,展示了通道在实际开发中的广泛应用。理解通道不仅有助于构建高并发系统,还能优化资源管理,提升程序性能。
296 31
|
11月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
219 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
9月前
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
456 85
|
6月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
228 1
|
6月前
|
人工智能 Go
GO语言之泛型应用
本文介绍了Go语言中泛型的使用,包括为何引入泛型、泛型语法详解以及如何自定义约束。通过实例展示了泛型在简化代码、提高复用性方面的优势,并演示了泛型在slice、指针、map等数据类型中的应用。
188 1
|
6月前
|
存储 监控 算法
公司员工泄密防护体系中跳表数据结构及其 Go 语言算法的应用研究
在数字化办公中,企业面临员工泄密风险。本文探讨使用跳表(Skip List)数据结构优化泄密防护系统,提升敏感数据监测效率。跳表以其高效的动态数据处理能力,为企业信息安全管理提供了可靠技术支持。
155 0
|
12月前
|
监控 编译器 Go
1 行命令引发的Go应用崩溃
这篇文章分析了Go编译时插桩工具导致go build -race竞态检测产生崩溃的原因。
816 179
|
11月前
|
存储 缓存 监控
企业监控软件中 Go 语言哈希表算法的应用研究与分析
在数字化时代,企业监控软件对企业的稳定运营至关重要。哈希表(散列表)作为高效的数据结构,广泛应用于企业监控中,如设备状态管理、数据分类和缓存机制。Go 语言中的 map 实现了哈希表,能快速处理海量监控数据,确保实时准确反映设备状态,提升系统性能,助力企业实现智能化管理。
244 3

热门文章

最新文章