编程学习网 > 数据库 > PHPer的Go之路 -- 条件循环语句
2020
01-14

PHPer的Go之路 -- 条件循环语句

Go的if和php不同之处在于以下几点:

  • 条件语句不需要使用圆括号将条件包含起来 ();
  • 无论语句体内有几条语句,花括号 {} 都是必须存在的;
  • 左花括号 { 必须与 if 或者 else 处于同一行;
  • Go中不能写成elseif,只有else if(需要分开)

栗子:


package main

import "fmt"

func main() {
    /* 定义局部变量 */
    var a int = 300
    var b int = 200
    /* 判断条件 */
    if a == 100 {
        fmt.Printf("a 值为 : %d\n", a );
    }else if b == 200 {
        fmt.Printf("b 值为 : %d\n", b );
    }else {
        fmt.Printf("都不对 \n", );
    }
}



switch…case…

switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough 。使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。


package main

import "fmt"

func main() {
    score := 85
    //条件型
    switch {
    case score >= 90:
        fmt.Println("级别: A")
    case score >= 80 && score < 90:
        fmt.Println("级别: B")
    case score >= 70 && score < 80:
        fmt.Println("级别: C")
    case score >= 60 && score < 70:
        fmt.Println("级别: D")
    default:
        fmt.Println("级别: F")
    }
    //等值
    switch score {
    case 80, 90:
        fmt.Println("值可能为80或者90")
    case 85:
        //执行下一条
        fallthrough
    case 50:
        fmt.Println("必须执行")
    default:
        fmt.Println("默认执行")
    }
}



注意:


  • 和条件语句一样,左花括号 { 必须与 switch 处于同一行;
  • 单个 case 中,可以出现多个结果选项(通过逗号分隔);
  • 与其它语言不同,Go 语言不需要用 break 来明确退出一个 case;
  • 只有在 case 中明确添加 fallthrough 关键字,才会继续执行紧跟的下一个 case;
  • 可以不设定 switch 之后的条件表达式,在这种情况下,整个 switch 结构与多个 if…else… 的逻辑作用等同。


for循环

for 循环是一个循环控制结构,可以执行指定次数的循环。

  1. a

         a := 0; 
    
         for i := a; i <= 10; i++ { 
    
         a += i 
    
         } 
    
         fmt.Printf("a : %d\n", a) 
    
    
         sum := 1 
    
         // sun小于等于10就累加,这样写也可以,更像 While 语句形式 
    
         for sum <= 10 { 
    
         sum += sum 
    
         } 
    
         fmt.Printf("sum : %d\n", sum) 
    
    
         numbers := [6]int{1, 2, 3, 5} 
    
         for i,x:= range numbers { 
    
         fmt.Printf("第 %d 位 x 的值 = %d\n", i,x) 
    
         } 
    
         //死循环 
    
         /*for { 
    
         sum++ // 无限循环下去 
    
         }*/ 

注意:


  • 和条件语句、分支语句一样,左花括号 { 必须与 for 处于同一行;
  • 不支持 whie 和 do-while 结构的循环语句;
  • 可以通过 for-range 结构对可迭代集合进行遍历;
  • 支持基于条件判断进行循环迭代;
  • 与 PHP 一样,都允许在循环条件中定义和初始化变量,且支持多重赋值;
  • Go 语言的 for 循环同样支持 continue 和 break 来控制循环。


break 与 continue

和 PHP 一样,Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。
Go 语言的 break 和 contine 与 PHP 的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过标签+「:」进行声明:

	

  1.      a := 0; 
    
         for i := a; i <= 10; i++ { 
    
         a += i 
    
         } 
    
         fmt.Printf("a : %d\n", a) 
    
    
         sum := 1 
    
         // sun小于等于10就累加,这样写也可以,更像 While 语句形式 
    
         for sum <= 10 { 
    
         sum += sum 
    
         } 
    
         fmt.Printf("sum : %d\n", sum) 
    
    
         numbers := [6]int{1, 2, 3, 5} 
    
         for i,x:= range numbers { 
    
         fmt.Printf("第 %d 位 x 的值 = %d\n", i,x) 
    
         } 
    
         //死循环 
    
         /*for { 
    
         sum++ // 无限循环下去 
    
         }*/ 

goto

goto 语句的语义非常简单,就是跳转到本函数内的某个标签

  1. 注意:
    
    和条件语句一样,左花括号 { 必须与 switch 处于同一行;
    单个 case 中,可以出现多个结果选项(通过逗号分隔);
    与其它语言不同,Go 语言不需要用 break 来明确退出一个 case;
    只有在 case 中明确添加 fallthrough 关键字,才会继续执行紧跟的下一个 case;
    可以不设定 switch 之后的条件表达式,在这种情况下,整个 switch 结构与多个 if…else… 的逻辑作用等同。
    for循环
    for 循环是一个循环控制结构,可以执行指定次数的循环。
    
        a := 0;
        for i := a; i <= 10; i++ {
            a += i
        }
        fmt.Printf("a : %d\n", a)
    
        sum := 1
        // sun小于等于10就累加,这样写也可以,更像 While 语句形式
        for sum <= 10 {
            sum += sum
        }
        fmt.Printf("sum : %d\n", sum)
    
        numbers := [6]int{1, 2, 3, 5}
        for i,x:= range numbers {
            fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
        }
        //死循环
        /*for {
            sum++ // 无限循环下去
        }*/
    
    
    注意:
    
    和条件语句、分支语句一样,左花括号 { 必须与 for 处于同一行;
    不支持 whie 和 do-while 结构的循环语句;
    可以通过 for-range 结构对可迭代集合进行遍历;
    支持基于条件判断进行循环迭代;
    与 PHP 一样,都允许在循环条件中定义和初始化变量,且支持多重赋值;
    Go 语言的 for 循环同样支持 continue 和 break 来控制循环。
    break 与 continue
    和 PHP 一样,Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。
    Go 语言的 break 和 contine 与 PHP 的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过标签+「:」进行声明:
    
    func bcTest() {
        arr := [][]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
    ITERATOR1:
        for i := 0; i < 3; i++ {
            for j := 0; j < 3; j++ {
                num := arr[i][j]
                if j > 2 {
                    break ITERATOR1
                }else if num == 2 {
                    continue
                }
                fmt.Println(num)
            }
        }
    }
    
    
    goto
    goto 语句的语义非常简单,就是跳转到本函数内的某个标签
    
    arr := [][]int{{1,2,3},{4,5,6},{7,8,9}}
    
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            num := arr[i][j]
            if j > 1 {
                goto EXIT
            }
            fmt.Println(num)
        }
    
    EXIT:
    fmt.Println("Exit.")
    



扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取