Go常见语句

集中常见的条件判断语句spa

语句 描述
if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句 if 语句 后可使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句 你能够在 ifelse if 语句中嵌入一个或多个 ifelse 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 循环it

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

goto 语法格式以下:io

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++ } }
相关文章
相关标签/搜索