For Loop
Tidak seperti bahasa pemrograman lainnya yang biasanya memiliki beberapa perulangan, di golang hanya ada satu perulangan yaitu for loop.
For loop adalah statement yang digunakan untuk mengeksekusi suatu blok kode secara berulang. Biasanya digunakan untuk melakukan iterasi terhadap nilai yang ada pada data slice, array, atau pada data yang bersifat iterable (dapat dilakukan perulangan).
Di dalam komputer/pemrograman, iterasi adalah sifat tertentu dari algoritma atau program komputer di mana suatu urutan atau lebih dari langkah algoritmik dilakukan di loop program. Hal ini dibedakan dari teknik berulang yang disebut rekursi. Wikipedia
Perhatikan contoh berikut ini
package main
import "fmt"
func main() {
count := 1
for count <= 5 {
fmt.Println("Perulangan:", count)
count++
}
}
output:
Perulangan: 1
Perulangan: 2
Perulangan: 3
Perulangan: 4
Perulangan: 5
Pada contoh diatas kita melakukan perulangan sebanyak 5 kali. Variabel count awalnya kita isi dengan nilai 1, kemudian di dalam blok perulangan kita menambah satu nilai pada variabel count dengan menggunakan unary operator seperti yang sudah kita pelajari sebelumnya pada materi operasi matematika. Penambahan nilai ini bertujuan agar kondisi pada statement for berubah menjadi false sehingga perulangan dapat dihentikan ketika nilai variabel count bernilai lebih dari 5.
Statement Pada For Loop
Hampir sama seperti if dan switch, kita juga bisa menambah statement pada for loop. Ada dua statement yang bisa kita tambahkan yaitu: 1) Init statement, merupakan sebuah statement sebelum for loop dieksekusi, dan 2) Post statement, merupakan statement yang akan selalu dieksekusi di akhir pada tiap-tiap perulangan.
Init statement hanya dieksekusi sekali sehingga bisa kita digunakan untuk menginisialisasi variabel awal yang menentukan counter perulangan. Sedangkan post statement yang selalu dieksekusi pada akhir tiap perulangan bisa kita gunakan untuk menaikkan nilai counter perulangan. Ini akan membuat kode kita menjadi lebih simpel. Untuk melihat perbedaannya perhatikan dua contoh for loop berikut.
For loop
count := 1
for count <= 5 {
fmt.Println("Perulangan:", count)
count++
}
For loop dengan init statement dan post statement
for count := 1; count <= 5; count++ {
fmt.Println("Perulangan:", count)
}
Bisa kamu lihat pada dua contoh for loop dengan statement di atas, pertama kita menggunakan init statement untuk menginisialisasi variabel count: count := 1;
, kemudian membuat kondisi perulangan: count <= 5;
, terakhir kita menggunakan post statement untuk menaikkan nilai variabel count: count++
.
Range
For loop bisa kita gunakan untuk melakukan iterasi pada data collection. Contoh data collection adalah map, array, dan slice. Untuk melakukan iterasi menggunakan for loop kita bisa menggunakan keyword range
. Untuk lebih jelasnya perhatikan contoh berikut.
package main
import "fmt"
func main() {
fruits := []string{"Nanas", "Melon", "Semangka"}
for index, fruit := range fruits {
fmt.Println("Index:", index, "=", fruit)
}
fmt.Println("---")
website := map[string]string{
"name": "Ruang Developer",
"domain": "www.ruangdeveloper.com",
}
for key, value := range website {
fmt.Println(key, ":", value)
}
}
output:
Index: 0 = Nanas
Index: 1 = Melon
Index: 2 = Semangka
---
name : Ruang Developer
domain : www.ruangdeveloper.com
Pada contoh di atas kita melakukan iterasi pada data slice fruits. Pada statement for loop, variabel index akan berisi index dari item slice, jika melakukan iterasi pada data map variabel ini akan berisi key. Kemudian variabel fruit akan berisi item slice, jika melakukan iterasi pada data map variabel ini akan berisi value dari item map.
Bagaimana jika kita hanya perlu item atau value datanya saja?
Seperti yang kita ketahui, di golang kita tidak diperbolehkan membuat variabel yang tidak kita gunakan. Oleh karena itu jika kita tidak menggunakan variabel index dari hasil iterasi kode kita akan error. Untuk mengatasi hal itu, kita bisa mengganti variabel index dengan underscore (_) untuk memberitahu golang bahwa variabel ini tidak kita gunakan. Perhatikan potongan kode berikut.
// mengganti variabel index menjadi underscore
for _, fruit := range fruits {
fmt.Println(fruit)
}
Berikutnya: #19: Break & Continue - Belajar Golang Dari Dasar