Skip to content

Kontrol Loop Go

Di Go hanya ada satu jenis pernyataan loop for Go meninggalkan pernyataan while pernyataan for dapat digunakan sebagai while.

for

Format pernyataannya adalah sebagai berikut

go
for init statement; expression; post statement {
  execute statement
}

Saat hanya menyimpan kondisi loop menjadi while.

go
for expression {
  execute statement
}

Ini adalah loop abadi tidak akan pernah keluar

go
for {
  execute statement
}

Contoh

Ini adalah kode untuk mengeluarkan angka dalam rentang [0,20]

go
for i := 0; i <= 20; i++ {
    fmt.Println(i)
}

Anda dapat menginisialisasi beberapa variabel sekaligus lalu menambahkannya

go
for i, j := 1, 2; i < 100 && j < 1000; i, j = i+1, j+1 {
  fmt.Println(i, j)
}

Digunakan sebagai while

go
num := 1
for num < 100 {
    num *= 2
}

Loop ganda untuk mencetak tabel perkalian 9x9 ini adalah kasus loop yang sangat klasik

go
func main() {
  for i := 1; i <= 9; i++ {
    for j := 1; j <= 9; j++ {
      if i <= j {
        fmt.Printf("%d*%d = %2d  ", i, j, i*j)
      }
    }
    fmt.Println()
  }
}

Output adalah sebagai berikut

go
1*1 =  1  1*2 =  2  1*3 =  3  1*4 =  4  1*5 =  5  1*6 =  6  1*7 =  7  1*8 =  8  1*9 =  9
2*2 =  4  2*3 =  6  2*4 =  8  2*5 = 10  2*6 = 12  2*7 = 14  2*8 = 16  2*9 = 18
3*3 =  9  3*4 = 12  3*5 = 15  3*6 = 18  3*7 = 21  3*8 = 24  3*9 = 27
4*4 = 16  4*5 = 20  4*6 = 24  4*7 = 28  4*8 = 32  4*9 = 36
5*5 = 25  5*6 = 30  5*7 = 35  5*8 = 40  5*9 = 45
6*6 = 36  6*7 = 42  6*8 = 48  6*9 = 54
7*7 = 49  7*8 = 56  7*9 = 63
8*8 = 64  8*9 = 72
9*9 = 81

for range

for range dapat lebih mudah melakukan iterasi pada beberapa struktur data yang dapat diiterasi seperti array slice string map channel. Format pernyataannya adalah sebagai berikut

go
for index, value := range iterable {
  // body
}

index adalah indeks struktur data yang dapat diiterasi value adalah nilai di bawah indeks yang sesuai misalnya menggunakan for range untuk melakukan iterasi pada string.

go
func main() {
   sequence := "hello world"
   for index, value := range sequence {
      fmt.Println(index, value)
   }
}

for range juga dapat melakukan iterasi pada nilai integer literal konstanta variabel semuanya valid.

go
for i := range 10 {
    fmt.Println(i)
}

n := 10
for i := range n {
    fmt.Println(i)
}

const n = 10
for i := range n {
  fmt.Println(i)
}

Untuk setiap jenis struktur data implementasi for range semuanya berbeda selanjutnya juga akan dibahas Anda dapat pergi ke Go - for statement untuk memahami lebih banyak detail.

break

Kata kunci break akan menghentikan loop for paling dalam dikombinasikan dengan label dapat mencapai efek menghentikan loop luar contohnya sebagai berikut ini adalah loop ganda

go
func main() {
  for i := 0; i < 10; i++ {
    for j := 0; j < 10; j++ {
      if i <= j {
        break
      }
      fmt.Println(i, j)
    }
  }
}

Output

1 0
2 0
2 1
3 0
3 1
3 2
...
9 6
9 7
9 8

Menggunakan label untuk menghentikan loop luar

go
func main() {
Outer:
  for i := 0; i < 10; i++ {
    for j := 0; j < 10; j++ {
      if i <= j {
        break Outer
      }
      fmt.Println(i, j)
    }
  }
}

Output

continue

Kata kunci continue akan melewati iterasi saat ini dari loop paling dalam langsung masuk ke iterasi berikutnya dikombinasikan dengan label dapat mencapai efek melewati loop luar contohnya sebagai berikut

go
func main() {
  for i := 0; i < 10; i++ {
    for j := 0; j < 10; j++ {
      if i > j {
        continue
      }
      fmt.Println(i, j)
    }
  }
}

Output

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
...
7 7
7 8
7 9
8 8
8 9
9 9

Menggunakan label

go
func main() {
Out:
  for i := 0; i < 10; i++ {
    for j := 0; j < 10; j++ {
      if i > j {
        continue Out
      }
            fmt.Println(i, j)
    }
  }
}

Output

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9

Golang by www.golangdev.cn edit