当前位置: 首页 > news >正文

切片定义

核心前提

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


一、空切片(最常用,后续需 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 := []自定义类型{}

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

http://www.jsqmd.com/news/268008/

相关文章:

  • 基于MVVM的运动健身服务小程序的设计与实现
  • 麦橘超然Flux部署避坑指南:常见错误与参数详解
  • 【收藏级】淘天大模型三面面经|春招多模态岗位高频考点全梳理
  • PyTorch开发踩坑记录:正确使用镜像才能发挥最大效能
  • 基于协同过滤算法的美食点餐分享推荐系统小程序
  • 哪个降重平台性价比最高?3元千字的学术猹实测体验 - 品牌观察员小捷
  • 基于微信小程序的家政服务平台
  • 提升学术论文写作效率的7款AI工具详细操作指南及案例展示
  • 学术论文写作过程中不可或缺的7款高效AI工具使用指南与实例解析
  • 基于微信小程序的家教信息管理系统
  • 2025年学术论文降重平台深度评测:为何学术猹(网易有道)是效果最好的选择? - 品牌观察员小捷
  • 收藏!中国高薪行业TOP1出炉,竟是AI行业(小白/程序员必看)
  • AI助力科研写作:9大平台助您高效完成学术论文与开题报告
  • 已黑化。
  • Hunyuan-HY-MT1.8B实战优化:max_new_tokens设置技巧详解
  • **中老年吃氨糖软骨素哪个牌子好 氨糖软骨素测评宝典:2026年高纯氨糖选购终极攻略+中老年人关节养护必备清单** - 博客万
  • AD导出Gerber文件过程中常见错误及规避方案(一文说清)
  • YOLOv12官版镜像训练600轮,稳定性表现令人惊喜
  • 开发者学习指南:蓝牙低功耗安全(1)
  • Qwen3-VL-2B节能部署方案:低功耗CPU设备运行实测
  • 【数据库】【Redis】缓存监控体系深度解析:从 BigKeys 到慢查询
  • MinerU如何实现端到端解析?从图像输入到语义输出流程详解
  • 高效撰写学术论文的7款AI工具使用技巧与实例演示完整解析
  • Qwen3-14B高并发部署:vLLM加速实现80 token/s实战
  • 学术论文写作必备的7款AI工具详细操作指南及实践案例分享
  • IQuest-Coder-V1-40B多任务处理:并行编程辅助系统开发
  • Qwen2.5-7B多语言支持实战:30+语言处理部署教程
  • SAM3教程:处理动态模糊图像的分割
  • 时序数据爆发增长,企业如何破解存储与分析困局?
  • 7款适用于学术论文写作的AI工具操作步骤详解与实例演示