• Go 分支流程


    if/else

    基本使用

       if/else应该是每个编程语言中都具备的基本分支结构。

       需要注意的是if||else{要放在同一行上,否则会抛出异常。

       另外,当多个else if出现时,不同分支只会执行一个。

    if 表达式1 {
        分支1
    } else if 表达式2 {
        分支2
    } else{
        分支3
    }
    

       如下,判断成绩的等级。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var grades int8 = 82
    	if grades > 90{
    		fmt.Println("成绩优异")
    	}else if grades > 80{
    		fmt.Println("成绩不错")
    	}else if grades > 60{
    		fmt.Println("成绩及格")
    	}else if grades > 40 {
    		fmt.Println("成绩较差")
    	}else{
    		fmt.Println("建议退学")
    	}
    }
    

    作用域

       if分支代码块具有块级作用域。我们可以在执行if时定义一个变量,该变量不能在块级作用域外使用。

       注意:只能使用短变量的声明方式

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    
    	if grades := 82; grades > 90{
    		fmt.Println("成绩优异")
    	}else if grades > 80{
    		fmt.Println("成绩不错")
    	}else if grades > 60{
    		fmt.Println("成绩及格")
    	}else if grades > 40 {
    		fmt.Println("成绩较差")
    	}else{
    		fmt.Println("建议退学")
    	}
    }
    

    switch/case

    基本使用

       switch/case可以让上述代码变得更加简洁。

       同其他语言一样,一个switch中只能有一个defaultdefault通常放在最下面。

      

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var grades int8 = 82
    	switch{
    	case grades > 90 :
    		fmt.Println("成绩优异")
    		// 不需要进行break
    	case grades > 60 :
    		fmt.Println("成绩及格")
    	case grades > 40:
    		fmt.Println("成绩较差")
    	default:
    		fmt.Println("建议退学")
    	}
    }
    
    

    作用域

       同样,switch也拥有块级作用域。我们可以在switch作用域内定义一个变量,该作用域外不能使用该变量。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	switch grades := 82; { // 注意结束的分号
    	case grades > 90:
    		fmt.Println("成绩优异")
    		// 不需要进行break
    	case grades > 60:
    		fmt.Println("成绩及格")
    	case grades > 40:
    		fmt.Println("成绩较差")
    	default:
    		fmt.Println("建议退学")
    	}
    }
    

    fallthrough

       fallthrough语法可以执行满足条件的case的下一个case,是为了兼容C语言中的case设计的。

      

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	switch age := 18; { // 注意结束的分号
    		case age < 18:
    			fmt.Println("未成年")
    		case age >= 18:
    			fmt.Println("成年了")
    			fallthrough  // 穿透,执行下一个case 无论是否为true
    		case age > 30:
    			fmt.Println("生活忙碌")
    		default:
    			fmt.Println("枯燥无味")
    	}
    	// 成年了
    	// 生活忙碌
    }
    
    

    for

    索引循环

       条件为true循环,条件为false则退出循环。

       下面是使用索引循环对数组进行遍历。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var arr = [...]string{"①","②","③","④","⑥"} // 定义string数组
    	for index := 0; index < len(arr); index++{
    		fmt.Println(index) // 打印索引值
    		fmt.Println(arr[index]) // 打印元素值
    	}
    }
    

    迭代变量

       迭代变量可以在for循环的外部定义,但是必须要使用;进行占位。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var arr = [...]string{"①","②","③","④","⑥"} // 定义string数组
    	var index int; // int类型默认为0
    	for ; index < len(arr); index++{
    		fmt.Println(index) // 打印索引值
    		fmt.Println(arr[index]) // 打印元素值
    	}
    }
    

    while循环

       由于Go语言中没有while循环,所以while循环可以用for来进行完成。

       具体的步骤就是省略迭代变量,省略结束条件。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var counter int
    	for {
    		if counter >= 5 {
    			break
    		}
    		fmt.Printf("第%d次执行
    ", counter+1)
    		counter++
    	}
    }
    

    for/range

       普通的索引循环只能拿出索引,因此十分的不方便。此时可使用for/range,迭代变量有两个。

       第一个为索引值,第二个为元素本身。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var arr = [...]string{"①", "②", "③", "④", "⑥"} // 定义string数组
    	for index, element := range arr{
    		fmt.Printf("索引值:%d
    ", index)
    		fmt.Printf("元素值:%v
    ", element)
    	}
    }
    
    

    退出循环

    goto

       当有多层循环嵌套时,可给一个代码块指定一个标签,当执行到该标签时,跳转到标签代码块。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	for i := 0; i < 10; i++ {
    		for j := 0; j < 10; j++ {
    			if j == 5 {
    				goto TAG
    			}
    			fmt.Println(j)
    		}
    	}
    	TAG:
    		fmt.Println("执行标签代码块")
    		return // 结束main函数
    }
    

    break

       break用于跳过本层循环。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	for i := 0; i < 10; i++ {
    		for j := 0; j < 10; j++ {
    			if j == 5 {
    				fmt.Println("跳过本层循环")
    				break
    			}
    		}
    		fmt.Println("执行外层循环")
    		break
    	}
    	fmt.Println("代码执行结束")
    }
    

    continue

       continue用于跳过本次循环。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	for i := 0; i < 10; i++ {
    		if i==5{
    			fmt.Println("跳过本次循环")
    		}else{
    			fmt.Println(i)
    		}
    	}
    	fmt.Println("代码执行结束")
    }
    
  • 相关阅读:
    平衡二叉树
    2020年度总结
    go中string是如何实现的呢
    escape的编码解码
    小程序实现下载图片到手机及文字到手机粘贴板
    小程序分享(单页面,朋友圈)
    sql server单行拆分成多行
    sql server 查询分组后用逗号拼接字符串和拆分
    安装虚拟机
    Lombok插件安装
  • 原文地址:https://www.cnblogs.com/Yunya-Cnblogs/p/13751631.html
Copyright © 2020-2023  润新知