golang 初始化并赋值_Golang 切片综合指南

本文详细介绍了Golang中切片的概念,包括切片的表示、初始化方式、长度与容量的关系、切片操作如赋值、切片、append等。切片作为动态数据结构,允许在运行时进行增长,提供了灵活的数据处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

e11f037756a4d17ffea12432ccffe939.png

在这篇文章中,我们将复习「切片」的概念,它是 Golang 中一个重要的数据结构,这一数据结构为你提供了处理与管理数据集合的方法。切片是围绕着动态数组的概念构建的,它与动态数组相似,可以根据你的需要而伸缩。

  • 就增长而言,切片是 动态 的,因为它们有自己的内置函数 append ,可以快速高效地增长切片。
  • 你还可以通过切割底层内存来减少切片的大小。
  • 在底层内存中切片是在连续的块上分配的,因此切片为你提供的便利之处包括:索引、迭代与垃圾回收优化。

切片的表示

  • 切片不存储任何数据,它仅描述底层数组的一部分。
  • 切片使用一个包含三个字段的结构表示:指向底层数组的指针(pointer)、长度(length)与容量(capacity)。
  • 这个数据结构类似于切片的描述符。
9a0a27bcfb525fd2bc8dc370e7bddcf5.png
  • 指针(Pointer): 指针用于指向数组的第一个元素,这个元素可以通过切片进行访问。在这里,指向的元素不必是数组的第一个元素。
  • 长度(Length): 长度代表数组中所有元素的总数。
  • 容量(Capacity): 容量表示切片可扩展的最大大小。

使用长度声明一个切片

在声明切片过程中,当你仅指定长度(Length)时,容量(Capacity)值与长度(Length)值相同。

8d03a3251b4ea640cdcef8ed22456236.png
// 使用长度声明一个切片。创建一个整型切片。// 长度和容量均为 5。slice := make([]int, 5)fmt.Println(len(slice)) // 打印结果 5fmt.Println(cap(slice)) // 打印结果 5

使用长度和容量声明一个切片

在声明切片过程中,当你分别指定长度(Length)和容量(Capacity)时,这将初始化一段无法访问的底层数组来创建一个具有可用容量的切片。

/*  使用长度和容量声明一个切片 创建一个整型切片。 长度为 3,容量为 5 。*/slice := make([]int, 3, 5)fmt.Println(len(slice)) // 打印结果 3fmt.Println(cap(slice)) // 打印结果 5
bd3d741583205a3e9ff79864a9767819.png

但请注意,尝试创建容量小于长度的切片是不允许的。

使用切片字面量创建切片

创建 切片 的惯用方法是使用 切片字面量 。它与创建数组相似,只是它不需要在 [ ] 操作符中指定值。你初始化切片时所用元素的数量将决定切片的初始长度与容量。

// 创建字符串类型切片。// 长度与容量均为 5。slic
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值