Flag包
-
os.Args
可以获取命令行中的多个参数形成一个
[]string
,按照下标可以获取对应位置的值package main import ( "fmt" "os" ) // os.Args 获取命令行参数 func main() { fmt.Println(os.Args) fmt.Printf("%T\n", os.Args) // 类型就是[]string,所以可以加下标来获取对应的参数 fmt.Println(os.Args[1], os.Args[2]) }
-
Flag包
package main import ( "flag" "fmt" "time" ) // flag获取命令行参数 func main() { // 使用flag.Type创建一个标志位参数 // flag.Type(flag名, 默认值, 帮助信息)*Type,返回值是地址,帮助信息会在-help时展示 name := flag.String("name", "Morain", "请输入名字") age := flag.Int("age", 18, "请输入年龄") married := flag.Bool("married", false, "结婚了吗") cTime := flag.Duration("ct", time.Second, "结婚多久") // 获取用户参数,用法就是在命令后面用-flag名(=可省略)输入信息来为参数赋值 flag.Parse() // 打印对应地址的值 fmt.Println(*name) fmt.Println(*age) fmt.Println(*married) // 用户输入参数时分别用ns”、”us” /“µs”、”ms”、”s”、”m”、”h”为单位,转换为duration类型 fmt.Println(*cTime) // 使用Typevar创造标志位参数 // var name string // flag.StringVar(&name, "name", "Morain", "请输入名字") // // 解析用户的参数,支持-flag xxx (使用空格,一个-符号),--flag xxx (使用空格,两个-符号) // // -flag=xxx (使用等号,一个-符号)--flag=xxx (使用等号,两个-符号) // flag.Parse() // // 打印对应地址的值 // fmt.Println(name) // flag其他函数 // 返回命令行后的除了标志位开头的其他参数 fmt.Println(flag.Args()) // 返回命令行中其他参数的个数 fmt.Println(flag.NArg()) // 返回命令行中标志位开头的命令行参数的个数 fmt.Println(flag.NFlag()) }