下面这两种方式不知道是不是每种语言都有,我在 python 中用过这两种方式
利用os库获取,此种方式只是可以简单的捕获命令行参数,如果命令行参数很少的话,使用此方式
package main
import (
"fmt"
"os"
)
func main() {
// 获取命令行参数
fmt.Println("命令行参数数量:",len(os.Args))
for i,I:= range os.Args{
fmt.Printf("args[%v]=[%v]\n",i,I)
}
}
测试::
go run gotestgo.go aaa bbb ccc ddd
结果:
F:\go_pro\manager_ali_ecs\src>go run gotestgo.go aaa bbb ccc ddd
命令行参数数量: 5
args[0]=[C:\Users\ADMINI~1.DES\AppData\Local\Temp\go-build493348978\b001\exe\gotestgo.exe]
args[1]=[aaa]
args[2]=[bbb]
args[3]=[ccc]
args[4]=[ddd]
利用 flag 库获取命令行参数
package main
import (
"flag"
"fmt"
)
func main() {
/*
定义变量接收控制台参数
*/
var username string
var password string
var host string
var port int
// 添加 --help 帮助信息
flag.StringVar(&username, "u", "", "用户名,默认为空")
flag.StringVar(&password, "p", "", "密码,默认为空")
flag.StringVar(&host, "h", "127.0.0.1", "主机名,默认 127.0.0.1")
flag.IntVar(&port, "P", 3306, "端口号,默认为空")
flag.Parse()
// 验证参数
fmt.Printf("username=%v password=%v host=%v port=%v", username, password, host, port)
}
测试 --help 获取帮助
F:\go_pro\manager_ali_ecs\src>go run gotestgo.go --htlp
flag provided but not defined: -htlp
Usage of C:\Users\ADMINI~1.DES\AppData\Local\Temp\go-build127812726\b001\exe\gotestgo.exe:
-P int
端口号,默认为空 (default 3306)
-h string
主机名,默认 127.0.0.1 (default "127.0.0.1")
-p string
密码,默认为空
-u string
用户名,默认为空
测试参数
F:\go_pro\manager_ali_ecs\src>go run gotestgo.go -u root -p 123qwe
username=root password=123qwe host=127.0.0.1 port=3306
F:\go_pro\manager_ali_ecs\src>
F:\go_pro\manager_ali_ecs\src>go run gotestgo.go -u root -p 123qwe -h 192.168.1.1
username=root password=123qwe host=192.168.1.1 port=3306
F:\go_pro\manager_ali_ecs\src>
F:\go_pro\manager_ali_ecs\src>go run gotestgo.go -u root -p 123qwe -h 192.168.1.1 -p 3307
username=root password=3307 host=192.168.1.1 port=3306