在昨天介紹了 for loop
,而在 Go 中,有兩個與迴圈搭配的兩個命令,分別是:
在某些狀況下,你需要跳離迴圈,這時,可以使用 break
來直接跳開迴圈。
那甚麼時候需要用到 break
?
通常是判斷式太肥太攏才需要使用,不然通常靠判斷式就可以不需要 break
。
package main
import "fmt"
func main(){
var x int = 0
for x < 3{
if x == 1 {
break // 強迫中斷迴圈
}
fmt.Println(x)
x++
}
}
執行結果:
0
如果將 if 判斷式刪除,那就會印出 0 1 2。
但現在加入 if 判斷式,會因為 break 的關係,而造成中斷迴圈,直接跑到程式的最下面。所以這個範例就只會印出 0。
小情境:檢查 1~100 中是否乘以 3 會變 201 的數?
package main
import "fmt"
func main(){
find := false
for i := 1; i <= 100; i ++ {
if i * 3 == 201{
find = true
break // 直接跳出 for loop
}
}
if find {
fmt.Println("存在")
}else{
fmt.Println("不存在")
}
}
執行結果:
存在
當 i
到 67,就會通過條件,所以 68~100 這些都不用檢查了,當到了我們要的條件,就不用浪費時間去檢查剩下的。這種方法可以節省計算資源並提高效率。
除了強制跳出的 break
,還有一個叫 continue
,這會略過後面的程式碼,直接回到 for loop
那行。
簡單來說,強迫回到迴圈的開頭。
package main
import "fmt"
func main(){
var x int
for x = 0; x < 3; x++{
if x == 1{
continue
}
fmt.Println(x)
}
}
執行結果:
0
2
這段程式會因為 continue
的關係而只印出 0 2。
小情境: 做一支程式印出 1~50 內不是 5 的倍數( 5 的倍數略過不印)
package main
import "fmt"
func main(){
for i := 1; i <= 50; i ++{
if i % 5 == 0{
continue
}
fmt.Printf("%d,",i)
}
}
執行結果:
1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19,21,22,23,24,26,27,28,29,31,32,33,34,36,37,38,39,41,42,43,44,46,47,48,49,
package main
import "fmt"
func main(){
var x int
for x = 0; x < 50 ; x++{
if x % 2 == 0 {
continue
}
fmt.Println(x)
}
}
package main
import "fmt"
func main(){
var result int = 0
for true{
var x int
fmt.Scanln(&x)
if x == 0 {
break
}
result += x
}
fmt.Println("total:", result)
}
參考資料: