flag包实现了命令行参数的解析。
package main
import (
"flag"
"fmt"
)
var flagvar int
var flagvar2 string
var b = flag.String("b", "bbbbb", "input ur name")
//自定义docValue类型
type docValue string
func (d *docValue) String() string {
return fmt.Sprint(*d)
}
func (d *docValue) Set(value string) error {
*d = docValue(value)
return nil
}
var flagvar3 docValue
func init() {
//两个命令行参数 flagname,test,他们的值分别解析给flagvar,flagvar2两个变量
//使用方式 go run main.go -flagname=990 -test=666
flag.IntVar(&flagvar, "flagname", 12345, "help message for flagname")
flag.StringVar(&flagvar2, "test", "flagvar2 value", "help message for test")
}
func main() {
//自定义了一个docValue类型的变量flagvar3,用于接受-myname参数的值
//go run main.go -flagname=990 -test=666 -myname=aaaa
flag.Var(&flagvar3, "myname", "help message for myname")
//参数解析到flagvar变量中
flag.Parse()
fmt.Println(flag.Args(), flag.NArg())
fmt.Printf("b:%d\n", *b)
fmt.Println(flagvar, flagvar2, flagvar3)
}