Go语言学习第二课-条件选择与循环

各种编程语言在处理逻辑编程时,主要有条件语句,选择语句,循环语句这三大部分。在go语言中,这三种语句的语法可能与之前学的编程语言的语法有些差异。现在我们来分别看一下

go语言条件语句if/else用法

先看一下代码

func read()  {
	const filename  = "abc.txt"
	//常规操作
	//contents,err := ioutil.ReadFile(filename)
	//if err != nil {
	//	fmt.Println(err)
	//}else{
	//	fmt.Printf("%s", contents)
	//}
	//Go语言在判断语句中的特殊操作
	//先执行分号之前的内容,再对分号后的进行判断
	if contents,err := ioutil.ReadFile(filename); err!=nil{
		fmt.Println(err)
	}else {
		fmt.Printf("%s\n", contents)
	}
	//contents相当于if这个block中的局部变量,在外面将无法再被访问。
	// fmt.Println(contents)

}

上述函数,我们完成一次文件读取操作。在注释的常规部分,很容易理解。go语言除了条件语句不用加()之外与其它语言处理是一样的。但是

if contents,err := ioutil.ReadFile(filename); err!=nil

我们看一下这样的条件语句,先进行一次赋值,再对已赋值进行判断。虽然看上去反人类。但是能够减少代码冗余。不失为一种改进,但是这种写法还是得慢慢习惯。并且在if语句中定义的变量的作用域只在if模块中,这点需要注意

 go语言分支语句switch用法

还是先看代码

func calculate(a,b int,op string) int{
	var result int
	//每一个case自带break,如果不需要break要加上fallthrough(人性化)
	switch op {
	case "+":
		result = a+b
	case "-":
		result = a-b
	case "*":
		result = a*b
	case "/":
		result = a/b
	default:
		//panic报错,中断程序的执行
		panic("unsupported operator"+op)
	}
	return result
}
func Grade(score int)  string{
	g := ""
	switch  {
	case score<60:
		g="F"
	case score<80:
		g="C"
	case score<90:
		g="B"
	case score<=100:
		g = "A"
	default:
		panic(fmt.Sprintf("wrong score:%d",score))
	}
	return g
}

通过代码我们能发现几点奇怪的地方

  1. 在go语言的switch中每个case不需要在手动添加break,而是默认含有break,反而不需要break时要加上fallthrough(超级人性化的设计啊。)
  2. 在go语言中,switch不再需要强制指定分支变量,而是在case中进行变量判断

在switch我们用到panic函数,这是go语言中处理错误的一种方法,可用于打印出错信息并中断程序执行。

go语言循环语句for用法

在go语言中,删掉了 while关键字,所有循环改用for循环单独使用

func loop() int {
	sum := 0
	for i := 1;i<=100;i++{
		sum+=i
	}
	return sum
}
func convertToBin(n int) string {
	result := ""
	for ; n>0 ;n/=2{
		lsb := n%2
		result = strconv.Itoa(lsb)+result
	}
	return result
}

func printFile(filename string)  {
	file , err := os.Open(filename)
	if err!=nil{
		panic(err)
	}
	scanner := bufio.NewScanner(file)
	//省略递增条件,相当于while
	for scanner.Scan(){
		fmt.Println(scanner.Text())
	}
	//死循环
	//for {
	//	fmt.Println("die")
	//}
}

上述三个函数,以for循环中常用三种实例。首先由1加到100,采用的for循环与其它编程语言wudachabie

在十进制转二进制的函数中,可以看到,我们无须指定初值,只要给出自增条件即可

在循环读取文件中,for完美的替代了while循环,这样使得循环更加简洁易懂。且go语言的死循环非常的简便。众所周知。go语言在高并发上使用死循环超多。所以这样的操作更容易操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值