2022-08-13:以下go语言代码输出什么?A:[5 6 7 1 2 3 4] B

2022-08-13:以下go语言代码输出什么?A:[5 6 7 1 2 3 4] B:[1 2 3 4 5 6 7] C:[4 5 6 7 1 2 3]。

package main

import (
    "fmt"
)

func main() {
    nums := []int{1, 2, 3, 4, 5, 6, 7}
    k := 3
    rotate(nums, k)
    fmt.Println(nums)
}

func rotate(nums []int, k int) {
    k = k % len(nums)
    nums = append(nums[len(nums)-k:], nums[0:len(nums)-k]...)
}











































答案选B。主要原因是 append 后的 nums 是新数组,它并不会影响 main 函数中的 nums。如果最后不是赋值给 nums,而是使用 copy,结果就是 A 了。如果是nums = append(nums[:1], nums[0:len(nums)-k]…),结果就是[1 1 2 3 4 6 7],会影响原数组,因为底层数组是同一个。

在这里插入图片描述

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!