Golang的命令行输入
简单的命令行输入
package main
import (
"fmt"
"os"
)
func main() {
for _, value := range os.Args {
fmt.Printf("The value of the input value is: %v\n", value)
}
}
os.Args是一个string类型的切片,将命令行参数都放在了它里面
我们看一下输出结果
go build easyCommand.go
./easyCommand.exe Hello! World!
The value of the input value is: C:\wintercode\go\goproject\src\go_code\project01\main\commandLine\easyCommand.exe
The value of the input value is: Hello!
The value of the input value is: World!我们可以看到我们build之后,再输入 ./easyCommand.exe Hello! World!
产生的第一个参数是文件的绝对路径,第二个和第三个参数就是我们想要输入的参数
flag包解析命令行参数
但是上面的输入是要讲究顺序的,比如world总是在Hello后面。在开发的过程中,我们有的时候不想将就顺序,我们可以怎么办呢?
这个时候就用flag包里面的东西
package main
import (
"flag"
"fmt"
)
type user struct {
name string
age int
psw string
port int
}
func main() {
var userOj user
flag.StringVar(&userOj.name, "name", "myName", "姓名")
flag.IntVar(&userOj.age, "age", 100, "年龄")
flag.StringVar(&userOj.psw, "psw", "1234567", "密码")
flag.IntVar(&userOj.port, "port", 3306, "端口")
flag.Parse()
fmt.Println(userOj)
}
这里面flag中的方法中的参数,第一个是变量的指针,第二个是变量在命令行中的表示,第三个是默认值,第四个是说明
下面我们在powershell中输入:
go build flagCommand.go
./flagCommand.exe -name fzder -age 22 -psw 123 -port 8080得到的输出是
{fzder 22 123 8080}