import (
"fmt"
"os"
)
func main() {
fmt.Println(len(os.Args))
for i := range os.Args {
fmt.Println("i=", i, " args=", os.Args[i])
}
}
运行以上代码,带上参数
$ go run main.go xx1 xx2 xx3
4
i= 0 args= /var/folders/ph/8lpk54xn1vj6fc3fr23gc4nc0000gn/T/go-build3333773637/b001/exe/main
i= 1 args= xx1
i= 2 args= xx2
i= 3 args= xx3
和Java中带参数的方式类似。
试用flag包来解析命令行参数
import (
"flag"
"fmt"
)
func main() {
var user string
var password string
var host string
var port int
flag.StringVar(&user, "u", "", "用户名")
flag.StringVar(&password, "p", "", "密码")
flag.StringVar(&host, "h", "127.0.0.1", "主机名")
flag.IntVar(&port, "port", 3306, "端口号")
flag.Parse()
fmt.Println("user:", user)
fmt.Println("password:", password)
fmt.Println("host:", host)
fmt.Println("port:", port)
}
$ go run main1.go -u root -p123456 -h 192.168.0.2 -port 13306
flag provided but not defined: -p123456
Usage of /var/folders/ph/8lpk54xn1vj6fc3fr23gc4nc0000gn/T/go-build54840619/b001/exe/main1:
-h string
主机名 (default "127.0.0.1")
-p string
密码
-port int
端口号 (default 3306)
-u string
用户名
exit status 2
$ go run main1.go -u root -p 123456 -h 192.168.0.2 -port 13306
user: root
password: 123456
host: 192.168.0.2
port: 13306