Go语言范围(Range)

range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。

for key, value := range oldMap {
    newMap[key] = value
}

格式中的key和value是可以省略的。如果只想读取key,可以进行修改:

for key := range oldMap

for key, _ := range oldMap

(同理只读value)

for _, value := range oldMap

切片迭代

package main

import "fmt"

var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}

func main() {
	for i, v := range pow {
		fmt.Printf("2**%d = %d\n", i, v)
	}
}

从i=0开始进行迭代,直到切片结束。这里的key是切片数据标号,value是切片数据。

结果展示:

2**0 = 1
2**1 = 2
2**2 = 4
2**3 = 8
2**4 = 16
2**5 = 32
2**6 = 64
2**7 = 128

map迭代

map迭代的起始节点是随机的,但是之后的是按照顺序的。

package main

import "fmt"

func main() {
	map1 := make(map[int]float32)
	map1[1] = 1.0
	map1[2] = 2.0
	map1[3] = 3.0
	map1[4] = 4.0

	// 读取 key 和 value
	for key, value := range map1 {
		fmt.Printf("key is: %d - value is: %f\n", key, value)
	}

	// 读取 key
	for key := range map1 {
		fmt.Printf("key is: %d\n", key)
	}

	// 读取 value
	for _, value := range map1 {
		fmt.Printf("value is: %f\n", value)
	}
}

结果展示:

key is: 1 - value is: 1.000000
key is: 2 - value is: 2.000000
key is: 3 - value is: 3.000000
key is: 4 - value is: 4.000000
key is: 2
key is: 3
key is: 4
key is: 1
value is: 2.000000
value is: 3.000000
value is: 4.000000
value is: 1.000000

 字符串迭代

package main

import "fmt"

func main() {
	for key, value := range "string" {
		fmt.Printf("key is: %d - value is: %c\n", key, value)
	}
}

读字符串读的是ascii码,所以采用%c输出

结果展示:

key is: 0 - value is: s
key is: 1 - value is: t
key is: 2 - value is: r
key is: 3 - value is: i
key is: 4 - value is: n
key is: 5 - value is: g

channel

package main

import "fmt"

func main() {
	ch := make(chan int, 10)
	ch <- 11
	ch <- 12
	close(ch)

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

结果展示:

11
12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值