golang for each

发布时间:2024-12-23 03:33:23

在Go语言(Golang)中,没有像其他编程语言(如Java、C#)中的for each循环那样直接提供结构。但是,我们可以通过使用range关键字来实现相似的功能。

1. Range关键字

Range关键字用于遍历数组、切片、字符串、映射和通道(channel)类型。它返回两个值:当前元素的索引和当前元素的副本。通过range关键字,我们可以轻松地遍历集合中的每个元素。

2. 遍历数组和切片

在Go语言中,数组和切片是所谓的可迭代集合(iterable collection)。通过使用range关键字,我们可以遍历数组和切片中的每个元素,而无需手动管理索引。

下面是一个遍历数组的示例:

package main

import "fmt"

func main() {
    numbers := [3]int{1, 2, 3}

    for index, value := range numbers {
        fmt.Println("Index:", index, "Value:", value)
    }
}

上述代码将输出:

Index: 0 Value: 1
Index: 1 Value: 2
Index: 2 Value: 3

同样,我们也可以使用range关键字来遍历切片:

package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3}

    for index, value := range numbers {
        fmt.Println("Index:", index, "Value:", value)
    }
}

3. 遍历字符串和映射

除了数组和切片,我们还可以使用range关键字来遍历字符串和映射(map)。

下面是一个遍历字符串的示例:

package main

import "fmt"

func main() {
    message := "Hello, world!"

    for index, character := range message {
        fmt.Println("Index:", index, "Character:", string(character))
    }
}

上述代码将输出:

Index: 0 Character: H
Index: 1 Character: e
Index: 2 Character: l
Index: 3 Character: l
Index: 4 Character: o
Index: 5 Character: ,
Index: 6 Character:  
Index: 7 Character: w
Index: 8 Character: o
Index: 9 Character: r
Index: 10 Character: l
Index: 11 Character: d
Index: 12 Character: !

我们还可以使用range关键字来遍历映射(map)中的每个键值对:

package main

import "fmt"

func main() {
    scores := map[string]int{
        "Alice": 90,
        "Bob":   80,
        "Charlie": 70,
    }

    for name, score := range scores {
        fmt.Println("Name:", name, "Score:", score)
    }
}

上述代码将输出:

Name: Alice Score: 90
Name: Bob Score: 80
Name: Charlie Score: 70

在这篇文章中,我们学习了如何使用range关键字来实现类似于for each循环的功能。无论是遍历数组、切片、字符串还是映射,range关键字都是Go语言中一个非常强大和方便的工具。

相关推荐