Range

Range dalam Go adalah sebuah konstruksi yang memungkinkan kita untuk melakukan iterasi pada berbagai tipe data seperti array, slice, string, map, dan channel. Range sangat berguna untuk memproses data secara berurutan.

Sintaks Dasar

for index, value := range collection {
    // kode
}

Penggunaan Range

1. Range pada Array dan Slice

numbers := []int{1, 2, 3, 4, 5}
for i, num := range numbers {
    fmt.Printf("Index: %d, Value: %d\n", i, num)
}

2. Range pada String

text := "Hello"
for i, char := range text {
    fmt.Printf("Index: %d, Character: %c\n", i, char)
}

3. Range pada Map

colors := map[string]string{
    "red":   "#ff0000",
    "green": "#00ff00",
    "blue":  "#0000ff",
}
for key, value := range colors {
    fmt.Printf("Key: %s, Value: %s\n", key, value)
}

Mengabaikan Index atau Value

Kita bisa menggunakan underscore (_) untuk mengabaikan index atau value:

// Mengabaikan index
for _, value := range numbers {
    fmt.Println(value)
}

// Mengabaikan value
for key, _ := range colors {
    fmt.Println(key)
}

Range pada Channel

ch := make(chan int)
go func() {
    ch <- 1
    ch <- 2
    close(ch)
}()

for num := range ch {
    fmt.Println(num)
}

Best Practices

  1. Gunakan range ketika Anda perlu mengakses index dan value sekaligus
  2. Gunakan underscore (_) untuk mengabaikan nilai yang tidak digunakan
  3. Range sangat efisien karena Go mengoptimalkan iterasi