区别主要体现在以下几点:
- 切片是指针类型,数组是值类型
- 数组的长度是固定的,而切片长度可以任意调整(切片是动态的数组)
- 数组只有长度一个属性,而切片比数组多了一个容量(cap)属性
- 切片的底层也是数组实现的
package main
import (
"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]
*/
}