Go常见语句

集中常见的条件判断语句

语句描述
if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句 你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
switch 语句 switch 语句用于基于不同条件执行不同动作。
select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}

**与C语言等不同的是在if后面的布尔表达式没有括号
eg:
package main

import "fmt"

func main() {
    var a int = 10
    var b float32 = 10.1

    if a < 20 {
        fmt.Println("a 小于 20 \n")
    }
    fmt.Println("a,b的值为: %d,%f\n", a, b)
}



switch语句语法:
switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}


select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。

select语句语法:
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s); 
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}
    • 每个case都必须是一个通信
    • 所有channel表达式都会被求值
    • 所有被发送的表达式都会被求值
    • 如果任意某个通信可以进行,它就执行;其他被忽略。
    • 如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。
      否则:
      1. 如果有default子句,则执行该语句。
      2. 如果没有default字句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。
eg:

package main

import "fmt"

func main() {
    var c1, c2, c3 chan int
    var i1, i2 int
    select {
    case i1 = <-c1:
        fmt.Printf("received", i1, "from c1\n")
    case c2 <- i2:
        fmt.Printf("sent ", i2, "to c2\n")
    case i3, ok := (<-c3):
        if ok {
            fmt.Printf("received ", i3, "from c3\n")
        } else {
            fmt.Printf("c3 is closed\n")

        }
    default:
        fmt.Printf("no communication\n")

    }
}
结果为:
    no communication


循环语句:
循环类型描述
for 循环 重复执行语句块
循环嵌套

在 for 循环中嵌套一个或多个 for 循环

控制语句描述
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句 将控制转移到被标记的语句。

goto 语法格式如下:

goto label;
..
.
label: statement;



eg :
package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10

   /* 循环 */
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++     
   }  
}



posted @ 2018-09-30 17:10  酷酷的排球  阅读(329)  评论(0)    收藏  举报