写点什么

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“

  • 2022 年 10 月 10 日
    北京
  • 本文字数:318 字

    阅读完需:约 1 分钟

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“

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)}
复制代码



发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2021.02.15 加入

还未添加个人简介

评论

发布
暂无评论
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“_golang_福大大架构师每日一题_InfoQ写作社区