Go起步走 - if...else, switch
if..else
Go的if...else
語法與其他語言非常相近。
// 如果if後方的敘述是true,就執行block中的內容
if a == 2 {
return 2
}
// 加上else
if a == 2 {
return 2
} else {
return nil
}
// 加上else if
if a == 2 {
return 2
} else if a == 3 {
return 3
} else {
return nil
}
而Go比較特別的是可以在if後方加上一個initialization敘述。
if a += 1; a == 3 {
return 3
}
a+=1
會在condition判斷之前先執行,接著才進行判斷- 如果以這種方式宣告,a變數的scope只存在於這個if..else的block當中
- 作用較像將整理code使用
switch
switch
用法是給予多重敘述,看最初的值符合哪個,就執行哪個結果。
switch a {
case 2:
return 2
case 3:
return 3
default:
return nil
}
// 記得冒號與括號的位置
當然,除此之外也有其他寫法:
// 不加初始變數,直接使用各個case當做判斷式
switch {
case a == 2:
return 2
case b == 2:
return 2
default:
return "both a, b are not 2"
}
// 簡易的case可以都用一行來撰寫
switch {
case a == 2: return 2
case b == 2: return 2
default: return nil
}
// 符合多種情況可用逗號(,)分割
switch a {
case 1,2:
return 1 + 2
case 3,4:
return 3 + 4
}
// 可用break來停止整個switch的繼續執行
switch a {
default:
fmt.Println("Hello")
break
fmt.Println("World")
}
// => "Hello"
// 由於break的關係,印出"World"的指令並不會執行
// 用fallthrough來執行符合case下方的code
var result string
var a, b = 2, 3
switch {
case a == 2:
result = "a"
fallthrough
case b == 2:
result = "b"
default:
result = "no match"
}
// 結果result變數會是"b",因為雖然b的判斷式不成立
// 但由於a判斷式有fallthrough,所有一併連b的判斷式一起執行