程序开发 · 2024年1月24日

为什么 for range 和 for i 遍历切片时输出结果会不同?

大家好,今天本人给大家带来文章
《为什么 for range 和 for i 遍历切片时输出结果会不同?》,文中内容主要涉及到
,如果你对
GOLANG方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!,
,
for range和for i 输出结果不同的原因,在使用 for range 和 for i 遍历切片时,你可能会注意到输出结果不一样。这是因为 for range 返回的是切片元素的副本,而 for i 返回的是切片元素的引用。,例如,在以下代码中:,examplefunc 函数修改了传入的切片元素。在 for range 遍历中,返回的是切片的副本,因此输出的是修改前的值(0 和 1)。而 for i 遍历中,返回的是切片元素的引用,因此输出的是修改后的值(100 和 101)。,要使用 for range 获得切片元素的实际值,可以使用下划线 _ 占位符:,这样,for range 就会返回切片元素的副本,而 _ 占位符将舍弃索引值,仅输出实际值。,到这里,我们也就讲完了《为什么 for range 和 for i 遍历切片时输出结果会不同?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注GOLANG公众号,带你了解更多关于的知识点!,for range和for i 输出结果不同的原因,大家好,今天本人给大家带来文章
《为什么 for range 和 for i 遍历切片时输出结果会不同?》,文中内容主要涉及到
,如果你对
GOLANG方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!,

当前位置: > > > > 为什么 for range 和 for i 遍历切片时输出结果会不同?

为什么 for range 和 for i 遍历切片时输出结果会不同?

2024-10-30 22:36:50
0浏览
收藏

大家好,今天本人给大家带来文章《为什么 for range 和 for i 遍历切片时输出结果会不同?》,文中内容主要涉及到,如果你对GOLANG方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

for range和for i 输出结果不同的原因

在使用 for range 和 for i 遍历切片时,你可能会注意到输出结果不一样。这是因为 for range 返回的是切片元素的副本,而 for i 返回的是切片元素的引用。

例如,在以下代码中:

func main() {
    arr := make([]int, 2, 5)
    for i := 0; i < len(arr); i++ {
        arr[i] = i
    }
    examplefunc(arr)

    for v:= range arr {
        fmt.printf("%d\n", v) //输出0 1
    }

    for i := 0; i <len(arr); i++ {
        fmt.printf("%d\n",arr[i]) //输出100 101
    }
}

examplefunc 函数修改了传入的切片元素。在 for range 遍历中,返回的是切片的副本,因此输出的是修改前的值(0 和 1)。而 for i 遍历中,返回的是切片元素的引用,因此输出的是修改后的值(100 和 101)。

要使用 for range 获得切片元素的实际值,可以使用下划线 _ 占位符:

for _, v:= range arr {
    fmt.Printf("%d\n", v)
}

这样,for range 就会返回切片元素的副本,而 _ 占位符将舍弃索引值,仅输出实际值。

到这里,我们也就讲完了《为什么 for range 和 for i 遍历切片时输出结果会不同?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注GOLANG公众号,带你了解更多关于的知识点!

电脑故障诊断大全—解决你的常见电脑问题
如何用JavaScript正则表达式精准匹配特定class属性的li标签?