【go踩过的坑】for range

moonbamboo · · 526 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

思考

如果对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

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:moonbamboo

查看原文:【go踩过的坑】for range

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

526 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传