面试题答案
一键面试拆分原理
Go语言中,切片共享底层数组。为避免数据在后续操作中意外改变,需要创建新的底层数组。可以通过append
或手动创建新切片并逐个赋值的方式实现。
代码实现
package main
import "fmt"
func main() {
data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
mid := len(data) / 2
// 方法一:使用append
firstHalf := make([]int, mid)
firstHalf = append(firstHalf, data[:mid]...)
secondHalf := make([]int, len(data)-mid)
secondHalf = append(secondHalf, data[mid:]...)
fmt.Println("First Half:", firstHalf)
fmt.Println("Second Half:", secondHalf)
// 方法二:手动赋值
firstHalfManual := make([]int, mid)
for i := 0; i < mid; i++ {
firstHalfManual[i] = data[i]
}
secondHalfManual := make([]int, len(data)-mid)
for i := mid; i < len(data); i++ {
secondHalfManual[i - mid] = data[i]
}
fmt.Println("First Half (Manual):", firstHalfManual)
fmt.Println("Second Half (Manual):", secondHalfManual)
}