在 Go 语言中,数组(Array)和切片(Slice)是两个紧密相关但行为截然不同的概念。 简单总结:数组是固定长度的值类型,切片是动态长度的引用类型(底层是对数组的抽象)。 以下是详细的区别对比: 1. 长度与类型定义 数组(Array):长度是类型的一部分。 和 是完全不同的两种数据类型,不能互相赋值。 数组一旦定义,长度固定,不可修改。 切片(Slice):长度不是类型的一部分。 可以表示任意长度的整数序列。 切片的长度是动态的,可以随着元素的添加()而自动扩容。 2. 内存传递(值类型 vs 引用类型) 这是两者最核心的区别,决定了它们在函数传参和赋值时的行为。 数组是值类型(Value Type): 当你将一个数组赋值给另一个变量,或者作为参数传递给函数时,会发生完全拷贝(Deep Copy)。 修改副本不会影响原数组。 缺点:如果数组很大,传参会消耗大量内存和性能。 切片是引用类型(Reference Type): 切片本质上是一个轻量级的结构体(Header),包含三个字段:指向底层数组的指针、长度(len)、容量(cap)。 赋值或传参时,只拷贝这个轻量级的 H...