最基本的概念,如果為true就執行,如果為false的話就不會執行:
if true {
fmt.Println("This is true")
}
if false {
fmt.Println("This line will not be executed")
}
// 輸出結果:This is true
在ture或false之前加上!,會使結果顛倒,true會變成false,false變成true
if !true {
fmt.Println("This is !true")
}
if !false {
fmt.Println("This is !false")
}
// 輸出結果:This is !false
這邊將用一個範例,我有100元(myMoney),我想買的東西99元,寫一個if-else判斷式:
myMoney := 100
if myMoney > 99 {
fmt.Println("I can buy it")
}
else {
fmt.Println("I can't buy it")
}
// 輸出結果:I can buy it
如果買冰淇淋後剩70元以上(可能還要買便當),那就買。那如果少於的話就不買了。
myMoney := 100
iceCream := 20
if myMoney - iceCream > 50 {
fmt.println("buy it!")
}
else if myMoney - iceCream < 50 {
fmt.println("sorry, I won't buy")
}
// 輸出結果:buy it!
史上最盧的就是這種了
如果我的錢夠買法拉利那就買,不夠買法拉利的話,如果錢夠就買BMW,都不行的話就只好買Toyota
myMoney := 100
ferrari := 450
bmw := 250
toyota := 70
if myMoney > ferrari {
fmt.Println("buy Ferrari")
}
else if myMoney > bmw {
fmt.Println("buy BMW")
}
else {
fmt.Println("buy Toyota")
}
// 輸出結果:buy Toyota
承襲了C的概念,一樣有switch,而且用法也是相當的類似
switch在很多情況下可以取代if的功能,而且寫起來會更加簡潔
自動打招呼大法:
myfriend := "Tony"
switch myFriend {
case "Amy":
fmt.Println("Hi, Amy")
case "Tony":
fmt.Println("Hi bro")
case "Jackey":
fmt.Println("GO AWAY!")
}
輸出結果:Hi bro
要注意的是case中只需要:,並不需要{}來分隔
如果都不在case裡的情況就會執行default:
myfriend := "Jason"
switch myFriend {
case "Amy":
fmt.Println("Hi, Amy")
case "Tony":
fmt.Println("Hi bro")
case "Jackey":
fmt.Println("GO AWAY!")
default:
fmt.Println("Nice to meet you, but who are you?")
}
輸出結果:Nice to meet you, but who are you?
在case中加入fallthrough,會接著執行下一個case
假設看到Amy的時候通常會看到Tony:
myfriend := "Jason"
switch myFriend {
case "Amy":
fmt.Println("Hi, Amy")
fallthrough
case "Tony":
fmt.Println("Hi bro")
case "Jackey":
fmt.Println("GO AWAY!")
default:
fmt.Println("Nice to meet you, but who are you?")
}
輸出結果:Hi, Amy
Hi bro
如果多種case的處理方式都一樣,可以這樣寫
其實我也不知道這叫什麼,總之看範例:
myfriend := "Paul"
switch myFriend {
case "Amy", "Emily",:
fmt.Println("Hi, beautiful gril")
case "Tony", "Paul":
fmt.Println("Hi bro")
}
輸出結果:Hi bro
這個情況就有點像是if的功能了:
myMoney := 100
switch {
case myMoney > 500:
fmt.Println("buy Ferrari")
case myMoney > 250:
fmt.Println("buy BMW")
default
fmt.Println("buy Toyota")
}
輸出結果:buy Toyota
是不是跟剛剛有個if的範例有點像呢
fallthrough 的例題有錯
發現錯誤真的不少... 但應該是故意的
像是有些地放沒「:」 或是 大小寫不一樣
應該是另一種強制你自己 Debug 的美意吧??...