登录
首页 >  Golang >  Go问答

检查 Go 中是否提供了标志

来源:Golang技术栈

时间:2023-04-24 09:44:34 392浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《检查 Go 中是否提供了标志》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

使用 flag 包,有没有一种很好的方法来区分是否传递了字符串标志?

比如flag不传的时候,我想设置一个动态的默认值。但是,如果提供了标志但值为"".

目前我正在做以下事情:

flagHost = flag.String(flagHostFlagKey, "", "...")
...
setHostname := false
for _, arg := range os.Args {
    if arg == "-"+flagHostFlagKey {
        setHostname = true
    }
}

if !setHostname {
     ...

这似乎工作正常,但有点丑陋。在使用标准标志包的同时有更好的方法吗?

正确答案

使用flag.Visit()功能:

func isFlagPassed(name string) bool {
    found := false
    flag.Visit(func(f *flag.Flag) {
        if f.Name == name {
            found = true
        }
    })
    return found
}

好了,本文到此结束,带大家了解了《检查 Go 中是否提供了标志》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>