GO语言数组、切片、动态扩容

244 阅读1分钟

首先对于go语言的切片

package main

import "fmt"

func main() {
	arr :=[...]int{1,2,3,4}
	sli1 :=arr[0:2]
	sli2 :=arr[2:4]
	fmt.Println("切片后的数组 sli1",sli1)
	fmt.Println("切片后的数组 sli2",sli2)
	sli2=append(sli2,5)
	fmt.Println("扩容后的数组",sli2)
	fmt.Println("扩容后原始数组",arr)
	sli1=append(sli1, 5)
	fmt.Println("扩容后的数组",sli1)
	fmt.Println("扩容后初始数组",arr)
}

此时运行之后,可以得到,第一次扩容后原始数组内容为[1,2,3,4],没有被改变,只是进行切片后的数组进行扩容
但是第二次扩容,原始数组内容变为[1,2,5,4],原始数组被更改,因为进行切片时,取的是原始数组的前两个值,当进行数组的扩容时,扩容之后变成了三个值,但是对于原始数组来说,只是更改了第三个数值的值。只是更改第三个数值。