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++ } }
相關文章
相關標籤/搜索