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语言在高并发上使用死循环超多。所以这样的操作更容易操作。

你可能感兴趣的:(Golang专区,Go语言开发与实战)