os.Args[1:]中命令行参数为空时,不执行内部语句

问题描述

当命令行中输入值为空时,不会执行else后面的语句块.

func qualityTran() {
	for _,v := range os.Args[1:]{
		//如果不为空,直接对原值转换
		if v !=""{
			a,_ := strconv.Atoi(v)
			fmt.Println(tran(a))
			//input.Scan()
		}else {
			fmt.Println("1")
			//如果是空则从标准输入读取
			fmt.Println("please input a num:")
			input := bufio.NewScanner(os.Stdin)
			input.Scan()
			a :=input.Text()
			b,_ := strconv.Atoi(a)
			fmt.Println(tran(b))
		}
	}
}

原因分析:

实际再程序执行过程中,for循环直接结束,并不会进入到if语句判断.


解决方案:

func qualityTran() {
	flag :=0
	for _,v := range os.Args[1:]{
		//如果不为空,直接对原值转换
		if v !=""{
			a,_ := strconv.Atoi(v)
			fmt.Println(tran(a))
			//input.Scan()
			flag =1
		}
	}
	if flag ==0 {
		//如果是空则从标准输入读取
		fmt.Println("please input a num:")
		input := bufio.NewScanner(os.Stdin)
		input.Scan()
		a :=input.Text()
		b,_ := strconv.Atoi(a)
		fmt.Println(tran(b))
	}
}

你可能感兴趣的:(go,开发语言)