鏈客,專爲開發者而生,有問必答!區塊鏈
此文章來自鏈客區塊鏈技術問答社區,未經容許拒絕轉載。測試
程序的流程控制結構一共有三種:順序結構,選擇結構,循環結構。spa
1、條件語句code
1.1 If語句圖片
語法格式:開發
if 布爾表達式 {rem
/ 在布爾表達式爲 true 時執行 /get
}編譯器
if 布爾表達式 {string
/ 在布爾表達式爲 true 時執行 /
} else {
/ 在布爾表達式爲 false 時執行 /
}
if 布爾表達式1 {
/ 在布爾表達式1爲 true 時執行 /
} else if 布爾表達式2{
/ 在布爾表達式1爲 false ,布爾表達式2爲true時執行 /
} else{
/ 在上面兩個布爾表達式都爲false時,執行/
}
示例代碼:
package main
import "fmt"
func main() {
/ 定義局部變量 /
var a int = 10
/ 使用 if 語句判斷布爾表達式 /
if a < 20 {
/* 若是條件爲 true 則執行如下語句 */ fmt.Printf("a 小於 20\n" )
}
fmt.Printf("a 的值爲 : %dn", a)
}
若是其中包含一個可選的語句組件(在評估條件以前執行),則還有一個變體。它的語法是
if statement; condition {
}
if condition{
}
示例代碼:
package main
import (
"fmt"
)
func main() {
if num := 10; num % 2 == 0 { //checks if number is even fmt.Println(num,"is even") } else { fmt.Println(num,"is odd") }
}
須要注意的是,num的定義在if裏,那麼只可以在該if..else語句塊中使用,不然編譯器會報錯的。
1.2 switch 語句
1.2.1 switch的語法
switch是一個條件語句,它計算表達式並將其與可能匹配的列表進行比較,並根據匹配執行代碼塊。它能夠被認爲是一種慣用的方式來寫多個if else子句。
switch 語句用於基於不一樣條件執行不一樣動做,每個 case 分支都是惟一的,從上直下逐一測試,直到匹配爲止。switch 語句執行的過程從上至下,直到找到匹配項,匹配項後面也不須要再加break。
而若是switch沒有表達式,它會匹配true
Go裏面switch默認至關於每一個case最後帶有break,匹配成功後不會自動向下執行其餘case,而是跳出整個switch, 可是可使用fallthrough強制執行後面的case代碼。
變量var1 能夠是任何類型,而 val1 和 val2 則能夠是同類型的任意值。類型不被侷限於常量或整數,但必須是相同的類型;或者最終結果爲相同類型的表達式。您能夠同時測試多個可能符合條件的值,使用逗號分割它們,例如:case val1, val2, val3。
switch var1 {
case val1: ... case val2: ... default: ...
}
示例代碼:
package main
import "fmt"
func main() {
/ 定義局部變量 /
var grade string = "B"
var marks int = 90
switch marks {
case 90: grade = "A" case 80: grade = "B" case 50,60,70 : grade = "C" //case 後能夠由多個數值 default: grade = "D"
}
switch {
case grade == "A" : fmt.Printf("優秀!\n" ) case grade == "B", grade == "C" : fmt.Printf("良好\n" ) case grade == "D" : fmt.Printf("及格\n" ) case grade == "F": fmt.Printf("不及格\n" ) default: fmt.Printf("差\n" );
}
fmt.Printf("你的等級是 %sn", grade );
}
1.2.2 fallthrough語句
如需貫通後續的case,就添加fallthrough
package main
import (
"fmt"
)
type data [2]int
func main() {
switch x := 5; x { default: fmt.Println(x) case 5: x += 10 fmt.Println(x) fallthrough case 6: x += 20 fmt.Println(x) }
}