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