扫码一下
查看教程更方便
Go 语言还引入了另一个关键字 range 帮助我们快速遍历数组、切片、哈希表以及 Channel 等集合类型。
range 的使用非常简单,对于遍历array,*array,string它返回两个值,分别是数据的索引和值;遍历map时返回的两个值分别是key和value;遍历channel时,则只有一个返回数据。
首先我们看一个for循环的示例
package main
import "fmt"
func main() {
arr := [...]float64{67.7, 89.8, 21, 78}
for i := 0; i < len(arr); i++ {
fmt.Printf("arr 的第 %d 个元素是:%.2f\n", i, arr[i])
}
}
上述代码执行结果如下
arr 的第 0 个元素是:67.70
arr 的第 1 个元素是:89.80
arr 的第 2 个元素是:21.00
arr 的第 3 个元素是:78.00
Go 通过使用循环的 range 形式提供了一种更好、更简洁的方法来迭代数组。range返回索引和该索引处的值。让我们使用 range 重写上面的代码。
package main
import "fmt"
func main() {
arr := [...]float64{67.7, 89.8, 21, 78}
sum := float64(0)
for i, v := range arr { //range 返回每一行的索引和值
fmt.Printf("arr 的第 %d 个元素是:%.2f\n", i, v)
sum += v
}
fmt.Println("\narr中所有元素的和为:", sum)
}
上述代码的执行结果如下
arr 的第 0 个元素是:67.70
arr 的第 1 个元素是:89.80
arr 的第 2 个元素是:21.00
arr 的第 3 个元素是:78.00
arr中所有元素的和为: 256.5
如果我们只需要值,希望忽略索引,那么可以通过用 _
空白标识符替换索引来实现。
for _, v := range a { // 忽略索引
}
上面的 for 循环忽略了索引。同样,值也可以忽略。
for index, _ := range a { // 忽略值 }