--- title: "go语言基础学习十四" --- # 数组和切片的区别?# ## 一、定义# 1. 数组:长度 N 固定、属于类型一部分,\[3\]int 和 \[5\]int 是两种不同类型 2. 切片:\[\]T,长度可变,底层依托数组,类型只看元素 T ## 二、内存结构# 1. 数组:直接存全部元素,值类型,拷贝会完整复制所有数据 2. 切片:结构体头(指针 + 长度 len + 容量 cap),浅拷贝只复制头部,共用底层数组 \`\`\`go type sliceHeader struct { ptr unsafe.Pointer // 底层数组地址 len int cap int } \`\`\` ## 三、传参行为# 1. 数组:值传递,拷贝会完整复制所有数据 2. 切片:引用传递,拷贝只复制头部,共用底层数组