Golang 里的 range 问题

Golang 类似于 C/C++,同时又从其他语言(比如 Python)里借鉴了一些语法,比如 range。

在使用上,range 有一些特性,如果不注意的话,很容易引起误解。比如以下这段代码,会不会一直循环下去?

func main() {
    v := []int{1, 2, 3}
    for i := range v {
        v = append(v, i)
    }
}

以下是一些参考文章,里面提到的内容,对于深入理解 range 的实现及应用很有帮助:

Read More: