Go - Range:初學者的全面指南

你好,有志於成為程序員的各位!今天,我們將踏上一段令人興奮的旅程,進入Go程式設計的世界,特別聚焦於range關鍵字。作為你們親切友善的計算機科學老師,我將帶領你們透過大量的範例和解釋來理解這個概念。所以,拿起你們最喜歡的飲料,放鬆身心,我們一起來深入探討吧!

Go - Range

什麼是Range?

在我們開始編程之前,讓我們先來了解一下range是什麼。在Go語言中,range就像是數據結構的神奇導遊。它幫助你遍歷各種數據類型,包括數組、切片、映射、字符串和通道。把它當作是遍歷數據集合的瑞士軍刀吧。

Range的語法

range的基本語法非常簡單:

for index, value := range collection {
// 你的代碼這裡
}

在這裡,index給你元素的位置,value給你元素本身。但如果你現在覺得這很抽象,別擔心——我們馬上就會看到許多範例!

在數組和切片中使用Range

讓我們從一個使用數組的簡單範例開始:

package main

import "fmt"

func main() {
fruits := [3]string{"apple", "banana", "cherry"}

for index, fruit := range fruits {
fmt.Printf("索引: %d, 水果: %s\n", index, fruit)
}
}

當你運行這段代碼時,你會看到:

索引: 0, 水果: apple
索引: 1, 水果: banana
索引: 2, 水果: cherry

這裡發生了什麼?range關鍵字正在幫我們遍歷fruits數組。在每次迭代中,它都給我們當前元素的索引和值(水果名稱)。

只使用索引

有時候,你可能只需要索引。在這種情況下,你可以省略值變量:

for index := range fruits {
fmt.Printf("索引: %d\n", index)
}

只使用值

或者,你可能只關心值而不是索引。你可以使用空白標識符_來忽略索引:

for _, fruit := range fruits {
fmt.Printf("水果: %s\n", fruit)
}

在映射中使用Range

Go語言中的映射就像是滿滿的寶藏箱,裡面裝滿了鍵值對。讓我們看看range是如何與它們一起工作的:

package main

import "fmt"

func main() {
ages := map[string]int{
"Alice":  25,
"Bob":    30,
"Charlie": 35,
}

for name, age := range ages {
fmt.Printf("%s 是 %d 歲\n", name, age)
}
}

輸出:

Alice 是 25 歲
Bob 是 30 歲
Charlie 是 35 歲

在這裡,range給我們每個條目的鍵(名字)和值(年齡)。

在字符串中使用Range

Go語言中的字符串是字節序列,range可以幫助我們遍歷它們:

package main

import "fmt"

func main() {
message := "Hello, 世界"

for index, runeValue := range message {
fmt.Printf("索引: %d, 字符: %c, Unicode: %U\n", index, runeValue, runeValue)
}
}

這個範例展示了range如何正確處理多字節字符(如中文)。

在通道中使用Range

通道是Go語言中的一個獨特特性,用於goroutine之間的通信。這裡是如何使用range與通道一起工作的:

package main

import "fmt"

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

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

在這個範例中,range繼續從通道接收值,直到通道被關閉。

常見的Range方法

以下是一個總結range常見用法的表格:

數據類型 語法 描述
數組/切片 for index, value := range array 遍歷每個元素,提供索引和值
映射 for key, value := range map 遍歷每個鍵值對
字符串 for index, runeValue := range string 遍歷每個Unicode代碼點
通道 for value := range channel 從通道接收值直到通道被關閉

結論

好了,各位!我們已經對Go語言中的range關鍵字進行了一次宏大的巡禮。從數組到映射,從字符串到通道,range是你在Go中遍歷數據結構的可靠夥伴。

記住,熟能生巧。嘗試使用range與不同的數據類型編寫你自己的程序。嘗試,犯錯,然後從中學習。這是成為編程高手的最佳方式。

在我結束之前,這裡有一個小小的編程幽默:為什麼程序員喜歡暗色模式?因為亮色會吸引蟲子!?

快樂編程,願range與你同在!

Credits: Image by storyset