码迷,mamicode.com
首页 > 其他好文 > 详细

flag--命令行参数定义多标签示例

时间:2016-12-01 14:18:46      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:参数   blog   ppt   类型   user   sage   imp   other   pre   

// TestFlag2 project main.go
package main

import (
	"flag"
	"fmt"
)

func main() {
	//定义Flag
	//方式一:通过flag.String(), Bool(), Int() 等flag.Xxx()方法,该种方式返回一个相应的指针
	namePtr := flag.String("name", "Anson", "user‘s name")
	agePtr := flag.Int("age", 22, "user‘s age")
	vipPtr := flag.Bool("vip", true, "is a vip user")
	//方式二:通过flag.XxxVar()方法将flag绑定到一个变量,该种方式返回值类型
	var email string
	flag.StringVar(&email, "email", "abc@gmail.com", "user‘s email")
	//还有第三种方式,通过flag.Var()绑定自定义类型,自定义类型需要实现Value接口(Receives必须为指针)
	//flag.Var(&flagVal, "name", "help message for flagname")

	//解析命令行参数,值保存到定义的flag
	flag.Parse()

	//调用Parse解析后,就可以直接使用flag本身(指针类型)或者绑定的变量了(值类型)
	//还可通过flag.Args(), flag.Arg(i)来获取非flag命令行参数
	others := flag.Args() //保存Flag以外的变量
	fmt.Println("name:", *namePtr)
	fmt.Println("age:", *agePtr)
	fmt.Println("vip:", *vipPtr)
	fmt.Println("email:", email)
	fmt.Println("other:", others)
	fmt.Println("---------")
	for i := 0; i < len(flag.Args()); i++ {
		fmt.Println("Arg", i, "=", flag.Arg(i))
	}
}

 执行结果:

testflag2  -name aa -age 33 -vip=false aaa bbb ccc 111 222
name: aa
age: 33
vip: false
email: abc@gmail.com
other: [aaa bbb ccc 111 222]
---------
Arg 0 = aaa
Arg 1 = bbb
Arg 2 = ccc
Arg 3 = 111
Arg 4 = 222

 

flag--命令行参数定义多标签示例

标签:参数   blog   ppt   类型   user   sage   imp   other   pre   

原文地址:http://www.cnblogs.com/taityoukou/p/6121272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!