登录
首页 >  Golang >  Go问答

为什么调整切片长度范围不影响其值?

来源:stackoverflow

时间:2024-03-27 09:09:20 176浏览 收藏

尽管调整切片长度范围 (`a1[2:]`),但其值保持不变,因为范围声明中声明的迭代次数已在编译时确定。因此,即使切片本身发生了变化,循环中的索引和值变量仍保持其原始值,继续遍历原始切片。

问题内容

func main() {
    a1 := []int{0, 1, 2, 3}

    for i, v := range a1 {
        fmt.println(i, v)

        if i == 0 {
            a1 = a1[2:]
        }
    }

    fmt.println(a1)
}

实际输出:

0 0
1 1
2 2
3 3
[2 3]

我认为当i == 0时a1已经改变了,那么为什么v仍然输出原始a1的值?我知道范围内的迭代次数已经确定,但我仍然对这个结果感到困惑


解决方案


摘自 For statements with range clause 上的语言规范:

到这里,我们也就讲完了《为什么调整切片长度范围不影响其值?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>