golang for range 只有一个迭代变量?

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

题目, 下面的代码输出


package main

import (
    "fmt"
)

func rangeAppend() {
    v := []int{1, 2, 3}
    for i := range v {
        v = append(v, i)
    }
    fmt.Printf("%v", v)
}

func main() {
    rangeAppend()
}

golang playground https://play.golang.org/p/MxP...

为什么上面的程序输出

[1 2 3 0 1 2]

对于不同种类的range表达式结果值,for语句的迭代变量的数量可以有所不同, 代码中只有一个迭代变量的情况意味着什么呢?这意味着,该迭代变量只会代表当次迭代对应的元素值的索引值

下面代码中的i 是索引值, 0 1 2

    for i := range v {
        v = append(v, i)
    }

for语句的迭代变量是两个, 第一个是索引值, 第二个是迭代的值

package main

import (
    "fmt"
)

func rangeAppend() {
    v := []int{1, 2, 3}
    for _, i := range v {
        v = append(v, i)
    }
    fmt.Printf("%v", v)
}

func main() {
    rangeAppend()
}

上面输出

[1 2 3 1 2 3]

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

本文来自:Segmentfault

感谢作者:lidashuang

查看原文:golang for range 只有一个迭代变量?

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

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