2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2];B:死循环

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)
}

在这里插入图片描述

本作品采用《CC 协议》,转载必须注明作者和本文链接
微信公众号:福大大架构师每日一题。最新面试题,涉及golang,rust,mysql,redis,云原生,算法,分布式,网络,操作系统。
讨论数量: 5

为何多篇文章中间都要空一块代码区???艺术留白么

1年前 评论
joker_hu 1年前
已下线 (作者) 1年前
moonfdd (楼主) 1年前

每天来学点基本功

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
472
粉丝
21
喜欢
37
收藏
22
排名:457
访问:2.0 万
私信
所有博文
社区赞助商