首页 > 试题广场 >

下面Go程序的运行结果为() package main im

[单选题]
下面Go程序的运行结果为()
package main

import (
	"fmt"
)

func main() {
	i := [3]int{10, 10, 10}
	j := []int(i[2:3])
	i[2] = 900
	fmt.Println(j[0])
}
  • 0
  • 10
  • 900
  • 编译错误
在Go语言中,切片不是简单的拷贝。切片是对底层数组的引用 。 当通过  j := []int(i[2:3])  从数组  i  创建切片  j  时,切片  j  并没有复制数组  i  对应部分的数据,而是建立了对数组  i  中相应元素的引用关系。也就是说,切片  j  和数组  i  共享底层存储。所以当修改数组  i  中被切片  j  引用的元素( i[2]  )时,通过切片  j  访问该元素的值也会改变。 不过,如果使用  copy  函数来创建切片,例如  k := make([]int, len(j)); copy(k, j) ,此时  k  是一个新的切片,它拷贝了  j  的元素值, k  和  j  就有了独立的数据存储空间,修改其中一个切片不会影响另一个 。
发表于 2025-06-18 10:11:38 回复(0)