2022-10-10:以下go语言代码输出什么?A:1 2 3 0 1 2;B:死循环;C:1 2 3 1 2 3;D:1 2 3。
代码语言:go复制package main
import "fmt"
func main() {
v := []int{1, 2, 3}
for i := range v {
v = append(v, i)
}
fmt.Println(v)
}
答案选A。在遍历之前就获取的切片的长度len_temp := len(v)遍历的次数不会随着切片的变化而变化,代码自然不会是死循环了。另外,i是序号,不是值,在go语言里,for range第一个值一定是序号。这跟其他语言不一样,其他语言有可能是值,容易搞混淆。
等价于如下代码:
代码语言:go复制package main
import "fmt"
func main() {
v := []int{1, 2, 3}
len_temp := len(v)
for i := 0; i < len_temp; i {
v = append(v, i)
}
fmt.Println(v)
}