iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Modern Web

起步Go!Let's Go!系列 第 8

[ Day 08 ] Go 流程控制 - for 迴圈中的 break 和 continue 命令

  • 分享至 

  • xImage
  •  

在昨天介紹了 for loop,而在 Go 中,有兩個與迴圈搭配的兩個命令,分別是:

  1. break
  2. continue

break

在某些狀況下,你需要跳離迴圈,這時,可以使用 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 這些都不用檢查了,當到了我們要的條件,就不用浪費時間去檢查剩下的。這種方法可以節省計算資源並提高效率。

continue

除了強制跳出的 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,

練習

印出 1~50 的所有奇數

package main
import "fmt"
func main(){
    var x int
    for x = 0; x < 50 ; x++{
        if x % 2 == 0 {
            continue
        }
        fmt.Println(x)
    }
}

持續讓使用者輸入數字,計算總和,直到使用者輸入 0 為 止

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)
}

參考資料:

  1. Golang 流程控制 - for 迴圈中的 break 和 continue 命令 By 彭彭

上一篇
[ Day 07 ] Go 迴圈 - for 迴圈的魅力
下一篇
[ Day 09] Go 函式魔法 - 定義、召喚、傳遞
系列文
起步Go!Let's Go!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言