【golang笔记】go_命令行参数(20)

Page content

这一篇简单的整理了golang 命令行参数 相关的内容。

1.os.Args

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 run main.go haha test
命令行的参数有 3
args[0]=/var/folders/wn/wb4ns1vd5nl988yvr4r6fm6c0000gn/T/go-build1378197574/b001/exe/main
args[1]=haha
args[2]=test

2.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)
}
$ go run main.go -u root -pwd 1234 -h 127.0.0.1   
user=root pwd=1234 host=127.0.0.1 port=3306

欢迎大家的意见和交流

email: li_mingxie@163.com