猜猜这段代码会不会一直运行
package main
func main() {
a := []int{1, 2, 3}
s := a[:]
for i := range s {
s = append(s, i)
}
}
答案:不会。因为range 其实是一个语法糖。只是把语句展开而已。
// The loop we generate:
// len_temp := len(range)
// range_temp := range
// for index_temp = 0; index_temp < len_temp; index_temp++ {
// value_temp = range_temp[index_temp]
// index = index_temp
// value = value_temp
// original body
// }