Go 命令行参数总结
Go语言中main函数没有形参, 所以不能直接通过main函数获取命令行参数。
无论外界传入的是什么类型, 拿到的都是
字符串类型
通过os包获取命令行参数
package main
import (
"fmt"
"os"
)
func main() {
// 1.获取传入参数个数
num := len(os.Args)
// 2.打印所有获取到的参数
for i := 0; i < num; i++ {
// args[0]为可执行程序名,同c/c++
fmt.Println(os.Args[i])
}
}
通过flag包获取命令行参数
package main
import (
"flag"
"fmt"
)
func main() {
// 1.设置命令行参数: flag.Type(name, value, usage)
name := flag.String("name", "xxx", "请输入人的姓名")
age := flag.Int("age", 33, "请输入人的年龄")
// 1. 也可以这样设置: flag.Xxxx(*type, name, value, usage)
var name string
var age int
flag.StringVar(&name, "name", "xxx", "请输入人的姓名")
flag.IntVar(&age, "age", 33,"请输入人的姓名")
// 2.将命令行参数解析到注册的参数
flag.Parse()
// 3.使用命令行参数:flag对应方法返回的是指针类型
fmt.Println("name = ", *name)
fmt.Println("age = ", *age)
}
第二种写法
package main
import (
"flag"
"fmt"
)
func main() {
// 1.设置命令行参数: flag.TypeVar(*type, name, value, usage)
var name string
var age int
flag.StringVar(&name, "name", "xxx", "请输入人的姓名")
flag.IntVar(&age, "age", 33,"请输入人的姓名")
// 2.将命令行参数解析到注册的参数
flag.Parse()
// 3. 使用命令行参数
fmt.Println("name = ", name)
fmt.Println("age = ", age)
}