区别主要体现在以下几点:
- 切片是指针类型,数组是值类型
- 数组的长度是固定的,而切片长度可以任意调整(切片是动态的数组)
- 数组只有长度一个属性,而切片比数组多了一个容量(cap)属性
- 切片的底层也是数组实现的
package mainimport ("fmt")func changeSlice(slice []int){for i, value := range slice{slice[i] += value}}func changeArr(slice [6]int){for i, value := range slice{slice[i] += value}}func main() {// 创建切片slice := []int{1, 2, 3, 4, 5, 6}fmt.Println("slice 改变前", slice)changeSlice(slice)fmt.Println("slice 改变后", slice)fmt.Println("\n")// 创建数组array := [...]int{1, 2, 3, 4, 5, 6}fmt.Println("array 改变前", array)changeArr(array)fmt.Println("array 改变后", array)/*slice 改变前 [1 2 3 4 5 6]slice 改变后 [2 4 6 8 10 12]array 改变前 [1 2 3 4 5 6]array 改变后 [1 2 3 4 5 6]*/}
