区别主要体现在以下几点:

    • 切片是指针类型,数组是值类型
    • 数组的长度是固定的,而切片长度可以任意调整(切片是动态的数组)
    • 数组只有长度一个属性,而切片比数组多了一个容量(cap)属性
    • 切片的底层也是数组实现的
    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func changeSlice(slice []int){
    6. for i, value := range slice{
    7. slice[i] += value
    8. }
    9. }
    10. func changeArr(slice [6]int){
    11. for i, value := range slice{
    12. slice[i] += value
    13. }
    14. }
    15. func main() {
    16. // 创建切片
    17. slice := []int{1, 2, 3, 4, 5, 6}
    18. fmt.Println("slice 改变前", slice)
    19. changeSlice(slice)
    20. fmt.Println("slice 改变后", slice)
    21. fmt.Println("\n")
    22. // 创建数组
    23. array := [...]int{1, 2, 3, 4, 5, 6}
    24. fmt.Println("array 改变前", array)
    25. changeArr(array)
    26. fmt.Println("array 改变后", array)
    27. /*
    28. slice 改变前 [1 2 3 4 5 6]
    29. slice 改变后 [2 4 6 8 10 12]
    30. array 改变前 [1 2 3 4 5 6]
    31. array 改变后 [1 2 3 4 5 6]
    32. */
    33. }