命令行参数

go build -o test main.go

接收不指定的参数

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println(os.Args)
	for i, arg := range os.Args {
		fmt.Printf("第%d个参数为%s\n", i, arg)
	}
}

输出结果

$ ./test a b c d e f g # 一下为输出
[./test a b c d e f g]
第0个参数为./test
第1个参数为a
第2个参数为b
第3个参数为c
第4个参数为d
第5个参数为e
第6个参数为f
第7个参数为g

接收指定参数

package main

import (
	"flag"
	"fmt"
)

func main() {
	var user string
	var pwd string
	var host string
	var port int
	flag.StringVar(&user, "u", "", "用户名,默认为空")
	flag.StringVar(&pwd, "p", "", "密码,默认为空")
	flag.StringVar(&host, "h", "", "地址,默认为localhost")
	flag.IntVar(&port, "port", 3306, "端口号,默认为3306")
	flag.Parse()
	fmt.Printf("用户名=%v, 密码=%v, 地址=%v, 端口号=%v\n", user, pwd, host, port)
}

输出结果

$ go build -o test main.go               
$ ./test -u chuang -p 123456 -h localhost
用户名=chuang, 密码=123456, 地址=localhost, 端口号=3306