思考
如果对map或者slice使用for...range时,如果只用一个迭代参数,返回的是索引还是对应的值?
解答
for x,y := range map/slice时,其中第二个迭代参数可以省略。所以如果只用一个迭代参数,返回的将是索引值。
也就是说如下两行代码的功能相同:
for x := range map/slice
for x,_ := range map/slice
比如如下代码:
package main
import "fmt"
func main(){
m := make(map[int]string)
m[1] = "a"
m[10] = "b"
//使用两个迭代参数
for k,v := range m{
fmt.Printf("k = %d v = %s\n", k, v)
}
//只用一个迭代参数
for x := range m{
fmt.Printf("x = %v\n", x)
}
}
运行结果为:
k = 1 v = a
k = 10 v = b
x = 1
x = 10
有疑问加站长微信联系(非本文作者)