go语言开发基础35 - 之go语言里的命令行参数使用
当我们执行程序时需要通过命令行传参数时该如何处理?
这里记录下Go语言里的命令行参数的使用。
一、os.Args() 命令行参数使用
程序获取运行程序时给出的参数,可以通过os包来实现。先看代码:
package main import ( "os" "fmt" ) func main() { // 判断参数长度, fmt.Printf("参数长度:%d\n", len(os.Args)) // 循环打印参数 for i, v := range os.Args { fmt.Printf("参数 %d =%s\n", i, v) } // 获取参数并在程序里调用参数 if len(os.Args) == 2 { // 第一个参数是程序本身,第二个参数才是命令行传的参数 val1 := os.Args[1] fmt.Printf("第一个参数:%s\n", val1) } else if len(os.Args) == 3 { val1 := os.Args[1] val2 := os.Args[2] fmt.Printf("第一个参数:%s\n", val1) fmt.Printf("第二个参数:%s\n", val2) } else { fmt.Println("没有参数") } } /* 执行结果: .\main.exe test def 参数长度:3 参数 0 =E:\Scripts\go\src\main\main.exe 参数 1 =test 参数 2 =def 第一个参数:test 第二个参数:def */
二、flag包实现命令行参数
除了上面的os.Args实现命令行参数还可以用flag包实现命令行参数。
package main import ( "flag" "fmt" ) func main() { var host string var port int var username string var password string flag.StringVar(&host, "h", "", "please input hostname") // -h参数,"默认值"(默认值类型为string类型),"提示信息" flag.IntVar(&port, "p", 22, "please input port") // -p参数,"默认值"(默认值类型为int类型),"提示信息" flag.StringVar(&username, "u", "", "please input username") flag.StringVar(&password, "P", "", "please input password") flag.Parse() fmt.Printf("正在连接服务器 - 主机地址:%s, 端口号:%d, 用户名:%s, 密码:%s\n", host, port, username, password) } /* 执行结果: .\main.exe -h "127.0.0.1" -p 3306 -u "root" -P "user_passwd" 正在连接服务器 - 主机地址:127.0.0.1, 端口号:3306, 用户名:root, 密码:user_passwd */

浙公网安备 33010602011771号