跟着猫哥学Golang[11] - range关键字

Golang的循环可以是类似C语言for的,也可以是类似Python的range。

1. for 循环的 range 格式可以对 slice 或者 map 进行迭代循环,很类似其它脚本语言里面的foreach。range返回两个值:索引、值。
先看个slice的例子:
package main

import "fmt"

func main() {
	var list1 = []int{1,3,5,7}
	for i, v := range list1 {
		fmt.Println(i, v)
	}
}
# 输出:
0 1
1 3
2 5
3 7

再来看个map的例子,比slice的好理解些。
package main

import "fmt"

func main() {	
	var map1 = map[string]int{
		"first":1,
		"second":2,
		"third":3,
	}
	fmt.Println(map1)
	for k, v := range map1 {
		fmt.Println(k, v)
	}
}
#输出
map[first:1 second:2 third:3]
first 1
second 2
third 3
实际情况是map输出值很可能不是存储顺序的。大体上,各种语言在处理哈希表时候都是乱序存储的。

2. 如果只想接受某一个值,Golang可以用自己特有的方法(一个下划线"_")过滤掉没用的那个值,
还是刚才slice的例子,稍微改动一下:
package main

import "fmt"

func main() {
	var list1 = []int{1,3,5,7}
	for _, v := range list1 {
		fmt.Println(v)
	}
}
#输出
1
3
5
7
对于多个返回值的函数,我们都可以用一个或多个下划线"_"来忽略掉某个或某几个我们不想要的值。但是不能全是下划线,必须接受一个。

3. range实际上把所有的迭代都当做哈希来处理的。数组其实也是一种特殊的哈希,对吗?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值