用法一
package main
import (
"flag"
"fmt"
)
func main() {
host := flag.String("host", "127.0.0.1", "主机地址")
port := flag.Int("port", 3306, "端口")
username := flag.String("username", "root", "用户名")
password := flag.String("password", "111111", "数据库密码")
// 解析命令行参数变量, 必须写
flag.Parse()
fmt.Println(*host)
fmt.Println(*port)
fmt.Println(*username)
fmt.Println(*password)
// go run main.go -host 192.168.1.5 --port=8090 dev 10 28
// 命令行的其他非指定参数, 比如说上面的dev, 10, 28都属于
fmt.Println(flag.Args())
// 命令行非指定命名参数个数, 比如说上面的dev, 10, 28都属于
fmt.Println(flag.NArg())
// 使用的命令行指定的参数个数
fmt.Println(flag.NFlag())
}
go run main.go -h
# or
go run main.go --help
输出
Usage of C:\Users\ADMINI~1\AppData\Local\Temp\go-build033756430\b001\exe\main.exe:
-host string
主机地址 (default "127.0.0.1")
-password string
数据库密码 (default "111111")
-port int
端口 (default 3306)
-username string
用户名 (default "root")
go run main.go
输出
127.0.0.1
3306
root
111111
go run main.go -host 192.168.1.5 --port=8090
输出
192.168.1.5
8090
root
111111
用法二
package main
import (
"flag"
"fmt"
)
func main() {
var host string
var port int
var username string
var password string
flag.StringVar(&host,"host", "127.0.0.1", "主机地址")
flag.IntVar(&port,"port", 3306, "端口")
flag.StringVar(&username,"username", "root", "用户名")
flag.StringVar(&password,"password", "111111", "数据库密码")
// 解析命令行参数变量, 必须写
flag.Parse()
fmt.Println(host)
fmt.Println(port)
fmt.Println(username)
fmt.Println(password)
// go run main.go -host 192.168.1.5 --port=8090 dev 10 28
// 命令行的其他非指定参数, 比如说上面的dev, 10, 28都属于
fmt.Println(flag.Args())
// 命令行非指定命名参数个数, 比如说上面的dev, 10, 28都属于
fmt.Println(flag.NArg())
// 使用的命令行指定的参数个数
fmt.Println(flag.NFlag())
}
时间duration类型
package main
import (
"flag"
"fmt"
"time"
)
func main() {
/*
任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m”。
合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。
*/
t := flag.Duration("t", time.Second * 5, "间隔时间")
flag.Parse()
fmt.Println(*t)
fmt.Printf("%T\n", *t)
fmt.Printf("%#v\n", *t)
}
go run main.go -h
输出
Usage of C:\Users\ADMINI~1\AppData\Local\Temp\go-build079952202\b001\exe\main.exe:
-t duration
间隔时间 (default 5s)
go run main.go -t 3h15m7s
输出
3h15m7s
time.Duration
11707000000000