作者: | 来源:互联网 | 2023-06-21 18:32
2022-10-10:以下go语言代码输出什么?A:[123012];B:死循环;C:[123123];D:[123]。packagemainimportfmtfuncmain
2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2];B:死循环;C:[1 2 3 1 2 3];D:[1 2 3]。
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第一个值一定是序号。这跟其他语言不一样,其他语言有可能是值,容易搞混淆。
等价于如下代码:
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)
}
![在这里插入图片描述](https://img6.php1.cn/3cdc5/c64b/882/a7313fc5250aa241.png)