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
for init statement; expression; post statement {
execute statement
}Saat hanya menyimpan kondisi loop menjadi while.
for expression {
execute statement
}Ini adalah loop abadi tidak akan pernah keluar
for {
execute statement
}Contoh
Ini adalah kode untuk mengeluarkan angka dalam rentang [0,20]
for i := 0; i <= 20; i++ {
fmt.Println(i)
}Anda dapat menginisialisasi beberapa variabel sekaligus lalu menambahkannya
for i, j := 1, 2; i < 100 && j < 1000; i, j = i+1, j+1 {
fmt.Println(i, j)
}Digunakan sebagai while
num := 1
for num < 100 {
num *= 2
}Loop ganda untuk mencetak tabel perkalian 9x9 ini adalah kasus loop yang sangat klasik
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
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 = 81for 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
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.
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.
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
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 8Menggunakan label untuk menghentikan loop luar
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
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 9Menggunakan label
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