文档章节

flag包的使用详解

SunnyGo
 SunnyGo
发布于 2016/06/03 08:55
字数 436
阅读 198
收藏 0

 

go语言提供的flag包可以解析命令行的参数,而且使用起来非常的方便。 先看一个小例子: pro02_4.go

package main

import (
    "flag"
    "fmt"
)

var bFlag = flag.Bool("b", false, "If show message")

func main() {
    //第一个参数,为参数名称,第二个参数为默认值,第三个参数是说明
    name := flag.String("name", "Watson", "Input your name.")
    age := flag.Int("age", 0, "Input your age.")
    flag.Parse()
    if !*bFlag {
        fmt.Println("Mr. Watson, Come Here, I Want You!")
    } else {
        fmt.Println("Hello, ", *name, "   age:", *age)
    }

}

运行结果

在命令行输入go build pro02_4.go 然后执行 pro02_4.exe (Linux,MACos 执行./pro02_4 本书余下部分基本都以windows为例,就不再说明了)

显示结果 显示结果1

pro02_4.exe -b=true 显示结果2

pro02_4.exe -b=true -name=sunny -age=18

或者

pro02_4.exe -b=true -name sunny -age 18

结果都是 显示结果3

不过要是换成 pro02_4.exe -b false 显示结果就可能不确定了,在我电脑上显示的是 ![显示结果4]https://github.com/sunnygocms/gobook/blob/master/go_lang_base/02.4.4.png)

大家可能都会误以为是显示 显示结果1

几点注意事项:

1,通过flag.String(), flag.Bool, flag.Int(),flag.IntVar()等方式来定义命令行中需要使用的flag。

2,在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。

3,命令行参数的格式可以是:

-flag xxx (使用空格,一个 - 符号)
--flag xxx (使用空格,两个 - 符号)
-flag=xxx (使用等号,一个 - 符号)
--flag=xxx (使用等号,两个 - 符号)

其中,布尔类型的参数比较特殊,为了防止解析时的二义性,应该使用等号的方式指定。

4,命令行后面直接跟-help 、--help 或者是输入错误的参数就会把帮助文档显示出来,以上面的程序为例。 help

© 著作权归作者所有

共有 人打赏支持
SunnyGo
粉丝 7
博文 28
码字总数 8249
作品 0
东城
技术主管
私信 提问
在windows下配置Eclipse + go环境 Eclipse平台下配置Go语言开发环境(Win

mongoDB: mongoDB数据库基本操作 Programming in Go (Golang) – Setting up a Mac OS X Development Environment 造完美的go开发环境 在windows下配置Eclipse + go环境 Eclipse平台下配置G......

d_watson
2016/06/03
26
0
WPSEC-周计划(三)

这次来看看某著名大学—— 南京邮电大学的CTF题目吧~ (Ps:因本人较懒,所以做题时都是手工+度娘,几乎没有用到浏览器以外的工具,如有更好的办法,欢迎留言告知~) Web 签到题 直接查看源代...

BestBDs
2018/01/13
0
0
Android xml application属性详解

例子: <application android:allowClearUserData=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:backupAgent="string" android:debuggable=["true" | "fals......

恰同学少年
2015/07/28
0
0
Android中attr自定义属性详解

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:wen=http://schemas.android.com/apk/res/com.iteye.googlers android:orientation="vertical" android:l......

惊浪
2015/04/27
0
0
Intent的使用详解

在android中,Intent的使用可算是无处不在,它起到了媒介的作用,可以当做一条指令,或者一种协议。它的作用是告诉android系统要做什么和怎么做 该Intent对象组要由六部分,分别是Component...

mybabe0312
2015/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
2
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
3
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
3
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
2
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部