返回顶部
首页 > 资讯 > 后端开发 > GO >如何迭代命令行参数并收集标志后剩下的内容?
  • 912
分享到

如何迭代命令行参数并收集标志后剩下的内容?

2024-04-05 00:04:14 912人浏览 安东尼
摘要

对于一个golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何迭代命令行参数并收集标志后剩下的内容?》,主要介绍了,希望对大家的知识

对于一个golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何迭代命令行参数并收集标志后剩下的内容?》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我的目标是让“init”、“init -site=test”、两个版本的 init 以及独立的“debug”命令在命令行上被接受,并将剩下的任何内容视为文件名。

实际发生的情况是,在“init -site=test”的情况下,由于某种原因,“-site=test”也被接受为文件名。我怎样才能阻止这种情况发生?

package main

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

func main() {
    initCmd := flag.NewFlagSet("init", flag.ExitOnError)
    initSiteName := initCmd.String("site", "", "Main name for your site")
    flag.Parse()
    for pos, cmd := range os.Args {
        switch cmd {
        case "debug":
            fmt.Printf("debug\n")
        case "init":
            initCmd.Parse(os.Args[pos+1:])
            fmt.Printf("init\n  site name:%v\n", *initSiteName)
        default:
            fmt.Printf("Filename: %v\n", cmd);
        }
    }
}


解决方案


使用flag包不太方便。来自doc:

标志解析在第一个非标志参数(“-”是非标志参数)之前或终止符“--”之后停止。

您必须手动执行此操作:

解析后,标志后面的参数可用作切片 flag.Args() 或单独用作 flag.Arg(i)。

或者您可以使用另一个包。

终于介绍完啦!小伙伴们,这篇关于《如何迭代命令行参数并收集标志后剩下的内容?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~编程网公众号也会发布Golang相关知识,快来关注吧!

您可能感兴趣的文档:

--结束END--

本文标题: 如何迭代命令行参数并收集标志后剩下的内容?

本文链接: https://lsjlt.com/news/596275.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何迭代命令行参数并收集标志后剩下的内容?
    对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何迭代命令行参数并收集标志后剩下的内容?》,主要介绍了,希望对大家的知识...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作