Go语言-命令源码文件接收参数

方式一
os.Args是一个string的切片,用来存储所有的命令行参数。代码实现如下:

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)
    }
}

此方法是比较原生的方式,对解析参数不是特别的方便,特别是带有指定参数形式的命令行。

方式二
Go设计者给我们提供了flag包,可以方便地解析命令行参数。

解析指定的命令行参数

代码实现如下:

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, "端口号,默认为3306")

    //这里有一个非常重要的操作,必须调用该方法
    flag.Parse()
  
    //输出结果
    fmt.Printf("user=%v  pwd=%v  host=%v  port=%v", user, pwd, host, port)
}

还有一个与flag.StringVar函数类似的函数,叫flag.String。这两个函数的区别是,后者会直接返回一个已经分配好的用于存储命令参数值的地址。如果使用它的话,我们需要把

var user string
flag.StringVar(&user, "u", "", "用户名,默认为空")

改为

var user = *flag.String( "u", "", "用户名,默认为空")

函数flag.Parse用于真正解析命令参数,并把它们的值赋给相应的变量。对该函数的调用必须在所有命令参数存储载体的声明和设置之后,并且在读取任何命令参数值之前进行。

你可能感兴趣的:(Go语言-命令源码文件接收参数)