os 包和 flag 包获取命令行参数对比

优质
小牛编辑
150浏览
2023-12-01

通过 os 包获取命令行参数

  • 如果用户没有传递参数报错
  • 需要严格按照代码中的顺序传递参数, 否则造成数据混乱
  • 不能指定参数的名称
  • 获取到的数据都是字符串类型
package main
import (
	"os"
	"fmt"
)
int main(){
	name := os.Args[1]
	age := os.Args[2]
	fmt.Println("name = ", name)
	fmt.Println("age = ", age)
}

通过 flag 包获取命令行参数

  • 如果用户没有传递参数不会报错
  • 不需要严格按照代码中的顺序传递参数, 不会造成数据混乱
  • 可以指定参数的名称
  • 获取到的数据是我们自己指定的类型
package main
import (
	"flag"
	"fmt"
)
int main(){
	name := flag.String("name", "lnj", "请输入人的姓名")
	age := flag.Int("age", 33, "请输入人的年龄")
	// 2.注册解析命令行参数
	flag.Parse()
	// 3.使用命令行参数
	// 注意flag对应方法返回的都是指针类型, 所以使用时必须通过指针访问
	fmt.Println("name = ", *name)
	fmt.Println("age = ", *age)
}