標籤:strong ++ var mmu 求值 轉移 否則 ref receive
集中常見的條件判斷語句
語句 |
描述 |
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會隨機公平地選出一個執行。其他不會執行。
否則:
- 如果有default子句,則執行該語句。
- 如果沒有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 mainimport "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++ } }
Go常見語句