• 流程控制——if,循环,for range,switch, goto,break,continue


    1、if

    格式:

    if condition1 {
    // do something
    } else if condition2 {
    // do something else
    }else {
    // catch-all or default
    }

    else if 分支的数量是没有限制的。关键字 if 和 else 之后的左大括号{必须和关键字在同一行,如果你使用了 else if 结构,则前段代码块的右大括号}必须和 else if 关键字在同一行,这两条规则都是被编译器强制规定的。

    if 还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断。

    示例:

    package main
    
    import "fmt"
    
    func main() {
    	if x := 0; x == 0 {
    		fmt.Println("hello")
    	}
    	fmt.Println("world")
    }
    

      

    2、循环

    Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。

    使用循环语句时,注意以下几点:

    • 左花括号{必须与 for 处于同一行。
    • Go语言中的 for 循环与C语言一样,都允许在循环条件中定义和初始化变量,唯一的区别是,Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量。
    • Go语言的 for 循环同样支持 continue 和 break 来控制循环,但是它提供了一个更高级的 break,可以选择中断哪一个循环。

    3、for range

    通过 for range 遍历的返回值有一定的规律:

    • 数组、切片、字符串返回索引和值。
    • map 返回键和值。
    • 通道(channel)只返回通道内的值。

    4、switch

    1)基本写法

    Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行。

    示例:

    package main
    
    import "fmt"
    
    func main() {
    	var str = "hello"
    	switch str {
    	case "hello":
    		fmt.Println(1)
    	case "world":
    		fmt.Println(2)
    	default:
    		fmt.Println(0)
    	}
    }
    

      

    2)一分支多值

    当出现多个 case 要放在一起的时候,不同的 case 表达式使用逗号分隔。

    示例:

    package main
    
    import "fmt"
    
    func main() {
    	var str = "hello"
    	switch str {
    	case "hello", "world":
    		fmt.Println(1)
    	default:
    		fmt.Println(0)
    	}
    }
    

      

    3)分支表达式

    当case后跟的是表达式时,switch 后面不再需要跟判断变量。

    示例:

    package main
    
    import "fmt"
    
    func main() {
    	r := 25
    	switch {
    	case r > 10 && r < 20:
    		fmt.Println("1")
    	case r >= 20:
    		fmt.Println("2")
    	}
    }
    

      

    5、goto

    Go语言中 goto 语句通过标签进行代码间的无条件跳转。

    示例:

    package main
    import "fmt"
    func main() {
    	for x := 0; x < 10; x++ {
    		for y := 0; y < 10; y++ {
    			if y == 2 {
    				goto breakHere // 跳转到标签
    			}
    		}
    	}
    	return
    breakHere: // 标签
    	fmt.Println("done")
    }
    

      

    6、break

    Go语言中 break 语句可以结束 for、switch 和 select 的代码块,另外 break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。

    示例:

    package main
    import "fmt"
    func main() {
    OuterLoop:
    	for i := 0; i < 2; i++ {
    		for j := 0; j < 5; j++ {
    			switch j {
    			case 2:
    				break OuterLoop
    			}
    			fmt.Println(i, j)
    		}
    	}
    }
    

      

    7、continue 

    Go语言中 continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环。

    示例:

    package main
    
    import "fmt"
    
    func main() {
    OuterLoop:
    	for i := 0; i < 2; i++ {
    		for j := 0; j < 5; j++ {
    			switch j {
    			case 2:
    				continue OuterLoop
    			}
    			fmt.Println(i, j)
    		}
    	}
    }
    

      

  • 相关阅读:
    [PHP动态]0001.关于 PHP 7 你必须知道的五件事
    [PHP工具推荐]0001.分析和解析代码的7大工具
    Java数据结构和算法(八)——递归
    Java数据结构和算法(七)——链表
    Java数据结构和算法(六)——前缀、中缀、后缀表达式
    Java数据结构和算法(五)——队列
    Java数据结构和算法(四)——栈
    Java数据结构和算法(三)——冒泡、选择、插入排序算法
    Java数据结构和算法(二)——数组
    Java数据结构和算法(一)——简介
  • 原文地址:https://www.cnblogs.com/ACGame/p/11877275.html
Copyright © 2020-2023  润新知