GO教程: Go 語言 for range(鍵值循環)
在 Go 語言中,for range 是一個非常強大的語法結構,允許開發者在遍歷數組、切片、映射(map)和通道(channel)時,輕鬆獲取索引和對應的值。這篇文章將深入探討 for range 的用法,並提供一些實際的範例來幫助理解。
基本語法
for range 的基本語法如下:
for index, value := range collection {
// 使用 index 和 value
}在這裡,collection 可以是數組、切片、映射或通道。index 是當前元素的索引,而 value 是當前元素的值。
遍歷數組和切片
首先,我們來看看如何使用 for range 遍歷數組和切片。
package main
import "fmt"
func main() {
// 定義一個數組
arr := [3]int{10, 20, 30}
// 使用 for range 遍歷數組
for index, value := range arr {
fmt.Printf("索引: %d, 值: %dn", index, value)
}
// 定義一個切片
slice := []string{"apple", "banana", "cherry"}
// 使用 for range 遍歷切片
for index, value := range slice {
fmt.Printf("索引: %d, 值: %sn", index, value)
}
}在這個範例中,我們定義了一個整數數組和一個字符串切片,然後使用 for range 來遍歷它們,並打印出每個元素的索引和對應的值。
遍歷映射(map)
接下來,我們來看看如何使用 for range 遍歷映射。
package main
import "fmt"
func main() {
// 定義一個映射
m := map[string]int{"apple": 1, "banana": 2, "cherry": 3}
// 使用 for range 遍歷映射
for key, value := range m {
fmt.Printf("鍵: %s, 值: %dn", key, value)
}
}在這個範例中,我們定義了一個字符串到整數的映射,然後使用 for range 來遍歷它,並打印出每個鍵及其對應的值。
遍歷通道(channel)
最後,我們來看看如何使用 for range 遍歷通道。
package main
import "fmt"
func main() {
// 定義一個通道
ch := make(chan int)
// 使用 goroutine 發送數據
go func() {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // 關閉通道
}()
// 使用 for range 遍歷通道
for value := range ch {
fmt.Printf("接收到的值: %dn", value)
}
}在這個範例中,我們創建了一個整數通道,並使用 goroutine 發送數據。然後,我們使用 for range 來接收通道中的數據,直到通道被關閉。
總結
Go 語言中的 for range 提供了一種簡潔而有效的方式來遍歷各種數據結構。無論是數組、切片、映射還是通道,for range 都能幫助開發者輕鬆獲取索引和對應的值,從而提高編程效率。