Golang 命令行参数os.Args,flag包

获取命令行各个参数

文件位置:c:/Users/Gucci/go/src/demo

package main

import (
    "fmt"
    "os"
)

func main()  {
    fmt.Println("命令行的参数有", len(os.Args))

    // 遍历 os.Args 切片,就可以得到所有的命令行输入参数值
    for i, v := range os.Args{
        fmt.Printf("args[%v]=%v\n", i, v)
    }
}

测试:

// 控制台输入命令
cd c:/Users/Gucci/go/src/demo
go build
./demo.exe -u root -pwd password -h 127.0.0.1 -port 3306

// 输出
命令行的参数有 9
args[0]=C:\Users\Gucci\go\src\demo\file1\file1.exe
args[1]=-u
args[2]=root
args[3]=-pwd
args[4]=password
args[5]=-h
args[6]=127.0.0.1
args[7]=-port
args[8]=3306

flag 包用来解析命令行参数

说明:os.Args 的方式是比较原生的方式,对解析参数不是特别的方便,特别是带有指定参数形式的命令行。

文件位置:c:/Users/Gucci/go/src/demo

package main

import (
    "fmt"
    "flag"
)

func main()  {
    // 定义几个变量,用于接收命令行的参数值
    var user string
    var pwd string
    var host string
    var port int

    // &user 就是接收用户命令行中输入的 -u 后面的参数值
    // "u" 就是 -u 指定的参数
    // "" 默认值
    // "用户名,默认为空" 说明
    flag.StringVar(&user, "u", "", "用户名,默认为空")
    flag.StringVar(&pwd, "pwd", "", "密码,默认为空")
    flag.StringVar(&host, "h", "localhost", "主机名,默认为 localhost")
    flag.IntVar(&port, "port", 3306, "duan端口号,默认3306")

    // 【必须调用】从 arguments 中解析注册的 flag
    flag.Parse()

    // 输出结果
    fmt.Printf("\n user=%v \n pwd=%v \n host=%v \n port=%v \n", user, pwd, host, port)
}

测试

// 控制台输入命令
cd c:/Users/Gucci/go/src/demo
go build
./demo.exe -u root -pwd password -h 127.0.0.1 -port 3306

// 输出 
 user=root
 pwd=password
 host=127.0.0.1
 port=3306
讨论数量: 0

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!