go语言学习笔记1--flag代码包

flag代码包用于接收和解析命令参数。
我们以hello world代码作为示例。

package main
import "fmt"
func main() {
	fmt.Println("hello world!")
}

现在,我们想要根据输入定制hello的对象。比如,hello, xiaoming。
flag.StringVar的第一个参数是接收输入值的地址,第二个参数是输入参数的名称,第三个参数是在没有输入参数的时候的默认值,第四个参数是对参数的解释。在使用之前通过flag.Parse()对参数进行解析。

package main
import (
	"flag"
	"fmt"
)
var name string
func init(){
	flag.StringVar(&name, "name", "everyone", "The greeting Object!")
}
func main() {
	flag.Parse()
	fmt.Printf("hello, %s!\n", name)	
}

执行命令

go run demo.go -name="xiaoming"

输出为

hello, xiaoming

进一步,我们可以自定义参数使用说明。
第一种方式是重新定义flag.Usage函数。
第二种方式是重新给flag.CommandLine赋值。
第三种方式是自己创建一个私有的参数容器。

import (
	"flag"
	"fmt"
	"os"
)
var name3 string
//方式三 不使用全局的flag.CommandLine,自己创建一个私有的命令参数容器
var cmdLine = flag.NewFlagSet("question", flag.ExitOnError)
func init(){
	//方式二给flag.Commandline重新赋值
	//flag.CommandLine = flag.NewFlagSet("", flag.ExitOnError)
	//flag.CommandLine.Usage = func(){
	//	fmt.Fprintf(os.Stderr, "usage of %s:\n", "question")
	//	flag.PrintDefaults()
	//}
	
	//方式三 不使用全局的flag.CommandLine,自己创建一个私有的命令参数容器
	cmdLine.StringVar(&name3, "name", "everyone", "the greeting object")
}
func main() {
	//方式一 重新定义Usage函数
	//flag.Usage = func() {
	//	fmt.Fprintf(os.Stderr, "Usage of %s:\n", "question")
	//	flag.PrintDefaults()
	//}

	//方式三 不使用全局的flag.CommandLine,自己创建一个私有的命令参数容器
	cmdLine.Parse(os.Args[1:])
	fmt.Printf("hello, %s!\n", name3)	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值