glang flag
2024-09-05 04:38:36
package main
import (
"flag"
"fmt"
"github.com/golang/glog"
)
/*
解析 flag
必须先定义flag 命令行有 -port=xx 如果没有 var port =xx声明则会报错flag provided but not defined: -port
在所有的 flag 定义完成之后,可以通过调用 flag.Parse() 进行解析。
命令行 flag 的语法有如下三种形式:
-flag // 只支持bool类型 此时为true
-flag=x
-flag x // 只支持非bool类型
以上语法对于一个或两个‘-’号,效果是一样的,但是要注意对于第三种情况,只能用于非 bool 类型的 flag。原因是:如果支持,那么对于这样的命令 cmd -x *,如果有一个文件名字是:0或false等,则命令的原意会改变(bool 类型可以和其他类型一样处理,其次 bool 类型支持 -flag 这种形式,因为Parse()中,对 bool 类型进行了特殊处理)。默认的,提供了 -flag,则对应的值为 true,否则为 flag.Bool/BoolVar 中指定的默认值;如果希望显示设置为 false 则使用 -flag=false。
int 类型可以是十进制、十六进制、八进制甚至是负数;bool 类型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。Duration 可以接受任何 time.ParseDuration 能解析的类型。
注:如果bool类型的参数在命令行中用了-flag false这种形式时,其后的参数都会被当做非flag(non-flag)参数,non-flag 参数后面解释。
*/
func flagTest(){
//go run main.go -port=false --data sssqqq no_flag
fmt.Println(flag.Args()) // 获取非flag参数 [no_flag]
}
var local = flag.Bool("port", false, "testing!!")
var str = flag.String("data", "des", "testing!!")
func main() {
flag.Parse()
flagTest()
fmt.Println("test", *local)
fmt.Println("test", *str)
defer glog.Flush()
}
最新文章
- ResultSet相关ResultSetMetaData详细
- html基础学习
- Vim找不到配色文件的解决方法
- [Java面试十一]数据库总结.
- java实现远程储存读取文件
- Android Support ;v4、v7、v13的区别
- 【LeetCode】169 - Majority Element
- systemtap-与 oracle 转
- apache开源项目--HttpComponents
- ###g++编译器
- asp.net mvc中匿名类dynamic
- JavaScript修改DOM节点时,样式优先级的问题
- GlusterFS卷的种类
- 测试开发之前端——No9.HTML5中的视频/音频
- python------面向对象介绍之经典类与新式类的继承顺序
- 坑爹的Sun JDK
- m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么
- iOS 视频组件
- perf 移植
- DIV焦点事件详解 --【focus和tabIndex】​
热门文章
- install slax record
- python3 django项目从项目中导出依赖包
- 一篇文章搞懂Python装饰器所有用法
- django 2.2和mysql使用的常见问题
- linux - mysql:查看 mysql 是否安装成功
- scikit-learn机器学习(二)逻辑回归进行二分类(垃圾邮件分类),二分类性能指标,画ROC曲线,计算acc,recall,presicion,f1
- 使用super函数----增量重写普通方法和构造方法
- asp.net mvc 中Html.ValidationSummary显示html
- leetcode 四数之和
- Django学习参考资料