首页 > 其他分享 >类似 go get –u 的命令行参数实现

类似 go get –u 的命令行参数实现

时间:2023-06-21 21:01:38浏览次数:34  
标签:http get golang flag 命令行 stackoverflow go org

我们可能需要类似 go get –u …. 这样的方式来实现我们的应用,这时候我们无法简单地使用 flag.Parse 了,而是要用 FlagSet 了, 使用例子如下:

 

package main
import (   
    "flag"    
    "log"    
    "os"    
)var ()
func main() {
    // 读取命令参数,注意,这里根据执行任务的不同,参数也不一样   
    // 技术参考:    
    // http://stackoverflow.com/questions/24504024/defining-independent-flagsets-in-golang    
    // http://play.golang.org/p/eaEEx_EReX    
    if len(os.Args) <= 1 {    
        log.Println("请输入命令,支持的命令: esb、web、host!")    
        os.Exit(-1)    
    }    
    log.Println(os.Args[1])    
    cmd := os.Args[1]    // esb 客户端工具   
    fesb := flag.NewFlagSet("fesb", flag.ContinueOnError)    
    consumer := fesb.Int("c", 0, "ESB 关系中过滤消费者的编号,不输代表全部。")    
    provider := fesb.Int("p", 0, "ESB 关系中过滤生产者的编号,不输代表全部。")    
    dependType := fesb.String("t", "cache", "ESB关系依赖的类型,默认来自线上的缓存,可选项:config (数据库的配置),cache(线上调用的缓存)")    // web 站点   
    fweb := flag.NewFlagSet("fweb", flag.ContinueOnError)    
    webPort := fweb.Int("p", 81, "WEB 站点使用的端口号。")    // 修改host文件方式   
    fhost := flag.NewFlagSet("fhost", flag.ContinueOnError)    
    aaa := fhost.Bool("b", false, "test 参数!")    switch cmd {   
    case "esb":    
        err := fesb.Parse(os.Args[2:])    
        if err != nil {    
            log.Println("esb 参数类型错误,", err)    
            os.Exit(-1)    
        }    
        log.Println("dependType:", *dependType)    
        log.Println("consumer:", *consumer)    
        log.Println("provider:", *provider)    case "web":   
        err := fweb.Parse(os.Args[2:])    
        if err != nil {    
            log.Println("web 参数类型错误,", err)    
            os.Exit(-1)    
        }    
        log.Println("webPort:", *webPort)    case "host":   
        err := fhost.Parse(os.Args[2:])    
        if err != nil {    
            log.Println("host 参数类型错误,", err)    
            os.Exit(-1)    
        }    
        log.Println("aaa:", *aaa)    }
}

参考资料:

http://play.golang.org/p/eaEEx_EReX

http://stackoverflow.com/questions/24504024/defining-independent-flagsets-in-golang

https://golang.org/pkg/flag/#NewFlagSet

标签:http,get,golang,flag,命令行,stackoverflow,go,org
From: https://blog.51cto.com/u_15588078/6531445

相关文章

  • go 使用验证码库
    go使用验证码库标签(空格分隔):go安装gogetgithub.com/mojocn/base64Captcha使用packageapiimport( "github.com/gin-gonic/gin" "github.com/mojocn/base64Captcha" "go.uber.org/zap" "net/http")var( //存储方式 store=base......
  • Go-变量篇
    一、变量的声明方式(三种)1、varaint=num2、vara=num3、a:=num二、字符类型使用细节*Golang的字符使用UTF-8.英文-1字节;汉字-3个字节1、字符常量用单引号括起来。eg:varc1byte='a'2、在Go中,字符的本质是一个整数,直接输出时,......
  • 网安--burpsuite的target模块
                       定义:以主机或者子域名作为分类对经过bp的流量进行归纳整理,一个文件夹称为一个域  三大作用:域同一个域:协议域名端口相同,文件目录参数可以相同限定域的范围(只拦截/不拦截)设置作用域黑白名单可以同时生效......
  • 自动化平台总结(httprunner+djangorestframework+python3+Mysql+Vue)【基础构思】
    一、前言最近从零搭建了一个自动化测试平台,虽然不是第一次从零搭建,但是也从来没有进行过这类搭建的总结,还是记录一下,搭建过程中的一些问题和方法。方便以后总结和翻阅二、简介搭建的平台使用的是Python3.6,未来有空可能考虑加个java版本。前端用的Vue,主体是httprunner2.......
  • MongodChangeStream不生效
    interfaceChatMessageListener<T>extendsMessageListener<ChangeStreamDocument<Document>,T>{}1.检查mongodb是否启用了replicasets,参考配置https://stackoverflow.com/questions/59571945/the-changestream-stage-is-only-supported-on-replica-sets-error-......
  • MongoDB学习笔记
    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存......
  • centos 安装mongodb
    在CentOS系统中安装MongoDB可以按照以下步骤进行:配置MongoDB的Yum仓库sudovi/etc/yum.repos.d/mongodb-org-4.4.repo在编辑器中输入以下内容:[mongodb-org-4.4]name=MongoDBRepositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.......
  • Django与celery集成:异步任务原理和过程
    0.原理和架构a.客户发送请求到django;b.django产生任务(要执行的函数);c.django把任务丢给celery的brokerd.celery的worker从broker拿到任务并且执行;e.worker执行后保存结果到后端数据库;  1.在django里面配置celery的目录结构PSD:\djangotest\myrecrument>treeD:.├─.idea......
  • 问题解决 --- surface go sd卡槽不识别问题
    问题描述之前好好的,突然发现没有识别sd卡,sd卡是好的问题原因可能是系统更新了uefi解决办法重启电脑,多次点按音量加键进入uefi,关闭sd卡,重启电脑到系统再次进入uefi,开启sd卡,重启电脑到系统,完成!......
  • Google Chrome禁用触摸板滑动前进后退
    https://blog.csdn.net/qq_45279180/article/details/121684723今天给大家分享一下如何然让GoogleChrome禁用触摸板滑动前进后退。本来这个是一个不错的功能,但是甲方在使用触摸屏的电脑浏览页面的时候准备用滑动去切换轮播,但是出现了退出了当前页面回到首页的现象。排查后发现是......