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
*/

 

posted @ 2020-07-21 16:59  欧-阳  阅读(249)  评论(0)    收藏  举报