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
- Gunakan range ketika Anda perlu mengakses index dan value sekaligus
- Gunakan underscore (_) untuk mengabaikan nilai yang tidak digunakan
- Range sangat efisien karena Go mengoptimalkan iterasi