Go 数组与 切片的区别

2021-12-28  本文已影响0人  可望不可j

1.使用方式

数组和slice长的很像,操作方式也都差不多,并且slice包含了数组的基本的操作方式,如下标、range循环,还有一些如len()则是多种类型共用,所以根据操作根本搞不清数组和切片的区别,能够看出区别的地方主要看如何声明的。

数组的声明方式很单一,通常就是下面这样:

array1 := [5]int{1, 2, 3, 4, 5}

array2 := [5]int{}

slice的声明方式就非常多样了,如前面介绍的几种:

var slice1 = []int{1, 2, 3, 4, 5}

var slice2 = make([]int, 0, 5)

var slice3 = make([]int, 5, 5)

var slice4 = make([]int, 5)

加上对数组的切片和append操作都会产生数组切片(slice)

2.值传递or引用传递

func arrayModify(array [5]int) {

    newArray := array

    newArray[0] = 88

}

func sliceModify(slice []int) {

    newSlice := slice

    newSlice[0] = 88

}

func main() {

    array := [5]int{1, 2, 3, 4, 5}

    slice := []int{1, 2, 3, 4, 5}

    arrayModify(array)

    sliceModify(slice)

    fmt.Println(array)

    fmt.Println(slice)

}

输出

[1 2 3 4 5]

[88 2 3 4 5]

上一篇 下一篇

猜你喜欢

热点阅读