面试题答案
一键面试底层数组共享的影响
- 节省内存:多个切片共享同一个底层数组,避免了重复的数据存储,从而节省内存。
- 数据一致性:由于共享底层数组,对一个切片的修改会直接反映到其他共享该底层数组的切片上。
- 可能的意外修改风险:如果不注意,在一个地方对切片的修改可能会影响到其他依赖该底层数组的切片,导致程序出现难以调试的问题。
代码示例
package main
import "fmt"
func main() {
// 初始化一个切片
originalSlice := []int{1, 2, 3, 4, 5}
// 对切片进行截取
subSlice := originalSlice[1:3]
// 修改subSlice中的元素
subSlice[0] = 20
// 打印originalSlice,会发现其元素也被修改了
fmt.Println(originalSlice)
}
在上述代码中,subSlice
截取自originalSlice
,它们共享底层数组。当修改subSlice
中的元素时,originalSlice
中对应位置的元素也会被修改。运行该程序,输出结果为[1 20 3 4 5]
。