蚌埠市网站建设_网站建设公司_CMS_seo优化
2026/1/19 14:59:05 网站建设 项目流程

核心前提

切片的本质是「动态数组」,定义核心是 []元素类型,区别于数组的 [固定长度]元素类型


一、空切片(最常用,后续需 append 元素)

场景:初始化空切片,后续通过 append 添加元素(比如存储价格、列表数据)

写法(精简度排序) 代码示例 说明
极简(短声明) s := []int{} 直接字面量创建空切片,len=0、cap=0
规范(make) s := make([]int, 0) 显式用 make 创建,len=0、cap=0
性能优化(指定 cap) s := make([]int, 0, 10) 初始 len=0、cap=10,减少后续扩容开销

示例(自定义类型)

// 空切片存储 SpotPrice 结构体(你的业务场景)
prices := []SpotPrice{}          // 极简
prices := make([]SpotPrice, 0)   // 规范
prices := make([]SpotPrice, 0, 10) // 带初始容量(推荐已知数量范围时用)

二、带初始值的切片

场景:创建时直接填入初始元素(无需后续 append)

写法 代码示例 说明
基础写法 s := []int{1, 2, 3} len=3、cap=3,直接初始化元素
指定长度截断 s := []int{1, 2, 3}[:2] 取前 2 个元素,len=2、cap=3

示例(业务场景)

// 初始化包含2个可用区价格的切片
prices := []SpotPrice{{AvailabilityZone: "us-west-2a", SpotPrice: 0.8672},{AvailabilityZone: "us-west-2b", SpotPrice: 0.7036},
}

三、从数组 / 已有切片派生(切片表达式)

场景:基于现有数组 / 切片,截取部分元素生成新切片

写法 代码示例 说明
基础截取 s := arr[1:3] 取 arr 索引 1~2(左闭右开)的元素
省略起始 s := arr[:3] 从索引 0 到 2
省略结束 s := arr[1:] 从索引 1 到最后
全量截取 s := arr[:] 复制整个数组 / 切片(生成新切片)

示例

arr := [5]int{1,2,3,4,5}   // 数组
s1 := arr[1:3]             // [2,3],len=2、cap=4(继承原数组容量)
s2 := []int{1,2,3,4}[1:]   // [2,3,4],从已有切片派生

四、类型别名 / 自定义类型切片

场景:基于自定义类型(如你的 SpotPrice)定义切片

// 1. 先定义自定义类型
type SpotPrice struct {AvailabilityZone stringSpotPrice        float64
}// 2. 精简定义切片(3种写法)
prices := []SpotPrice{}                // 空切片
prices := make([]SpotPrice, 0, 10)     // 带初始容量
prices := []SpotPrice{{"us-west-2a", 0.8672}} // 带初始值

五、核心精简原则(避坑)

  1. 优先短声明:能用 := 就不用 var(如 s := []int{} 替代 var s []int = []int{});
  2. 空切片选字面量[]T{}make([]T, 0) 更精简,仅当需要指定初始容量时用 make([]T, 0, cap)
  3. 避免冗余长度:切片无需指定固定长度(如 []int{} 而非 [0]int{},后者是数组);
  4. 派生切片省内存:从数组 / 已有切片截取(arr[1:3])比重新创建更高效。

总结(常用写法速查表)

需求 最简写法
空切片(后续 append) s := []T{}
空切片(指定容量) s := make([]T, 0, cap)
带初始值切片 s := []T{v1, v2, v3}
从数组 / 切片派生 s := src[start:end]
自定义类型空切片 s := []自定义类型{}

所有写法均去掉冗余关键字 / 符号,聚焦核心逻辑,可直接复制到代码中使用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询