0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

golang通过切片创建新的切片

麦辣鸡腿堡 来源:盼盼编程 作者:盼盼编程 2023-10-09 09:48 次阅读

通过切片创建新的切片

切片之所以被称为切片,是因为创建一个新的切片,也就是把底层数组切出一部分。通过切片创建新切片的语法如下:

slice[i:j]
slice[i:j:k]

其中 i 表示从 slice 的第几个元素开始切,j 控制切片的长度(j-i),k 控制切片的容量(k-i),如果没有给定 k,则表示切到底层数组的最尾部。下面是几种常见的简写形式:

slice[i:]  // 从 i 切到最尾部
slice[:j]  // 从最开头切到 j(不包含 j)
slice[:]   // 从头切到尾,等价于复制整个 slice

让我们通过下面的例子来理解通过切片创建新的切片的本质:

// 创建一个整型切片
// 其长度和容量都是 5 个元素
num := []int{1, 2, 3, 4, 5}
// 创建一个新切片
// 其长度为 2 个元素,容量为 4 个元素
myNum := slice[1:3]

执行上面的代码后,我们有了两个切片,它们共享同一段底层数组,但通过不同的切片会看到底层数组的不同部分:

图片

注意:截取新切片时的原则是 "左含右不含"。所以 myNum 是从 num 的 index=1 处开始截取,截取到 index=3 的前一个元素,也就是不包index=3 这个元素。

所以,新的 myNum 是由 num 中的第2个元素、第3个元素组成的新的切片构,长度为 2,容量为 4。切片 num 能够看到底层数组全部 5 个元素的容量,而 myNum 能看到的底层数组的容量只有 4 个元素。num 无法访问到底层数组的第一个元素。所以,对 myNum 来说,那个元素就是不存在的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据结构
    +关注

    关注

    3

    文章

    564

    浏览量

    39900
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595
  • 切片
    +关注

    关注

    1

    文章

    22

    浏览量

    8414
收藏 人收藏

    评论

    相关推荐

    虚拟仪器可以和CT连接吗,就是CT拍的切片图可以通过板卡...

    就是CT拍的连续的切片图可以通过板卡采集吗
    发表于 11-25 09:35

    Mapr报告的切片多于设备中存在的切片

    我有一个完全放置和工作的设计 - 我在详细的地图报告中生成了模块级利用率数据该设备是Virtex 6 lx75t,包含11,640个切片,但地图上说我使用的是18016切片地图后我如何拥有7000片
    发表于 10-15 11:45

    如何通过report_utiliztion获得切片比率?

    大家好,当我运行report_utilization时,我没有获得切片使用百分比,只有FF / LUT / BRAM / DSP /等。如何通过report_utiliztion获得切片比率?谢谢
    发表于 10-18 14:26

    请问BGA封装如何切片

    请问BGA封装如何切片?是带芯片一起切片用显微镜观察锡球情况吗?是否有自动切片,精度如何?有看到板厂给的异常板切片报告说手工切片具有不确定性
    发表于 12-04 22:06

    怎么获得不同FPGA系列的等效切片计数

    大家好,我在Artix-7设备上实现了一个图像处理系统。我通过使用ISE工具生成的发布位置和路径报告,根据占用的切片计算了设计的资源消耗。现在我需要将我设计的资源消耗(占用切片)与其他一些设计进行
    发表于 04-29 13:40

    如何使用DSP切片设计?

    嗨,我正在尝试使用DSP切片的设计。但是,我发现在Virtex 6 FPGA中,还有一个额外的时序约束应用于DSP Slice(对于相同的vhdl输入)。额外的时序约束是MINPERIOD约束,它
    发表于 06-05 17:11

    晶柱切片後處理

    晶柱切片後處理 矽晶柱長成後,整個晶圓的製作才到了一半,接下必須將晶柱做裁切與檢測,裁切掉頭尾的晶棒將會進行外徑研磨、切片
    发表于 10-27 15:40 1313次阅读

    网络切片的分类 网络切片粒度如何选择

    网络切片是一种按需组网的方式,可以让运营商在统一的基础设施上分离出多个虚拟的端到端网络,每个网络切片从无线接入网承载网再到核心网上进行逻辑隔离,以适配各种各样类型的应用。 网络切片的分类 1、独立
    的头像 发表于 09-03 17:01 3200次阅读

    5G 网络切片之OTN切片和FlexE切片区别

    5G 网络切片本质上是一个 E2E 概念,将用户设备连接到租户特定的应用程序。E2E 网络切片由RAN 切片、核心切片和传输切片组成。每个网
    发表于 01-04 11:56 2608次阅读

    如何实现端到端网络切片

    3GPP将网络切片定义为5G 网络的主要功能之一,网络切片可看作是动态创建的逻辑端到端网络。在深入研究网络切片的概念之前,我们先简单回顾下 5G 的三大应用场景。
    发表于 06-15 17:56 1180次阅读
    如何实现端到端网络<b class='flag-5'>切片</b>?

    Go切片的内部实现

    cap容量,长度是指已经被赋过值的最大下标+1,可通过内置函数len()获得。 容量是指切片目前可容纳的最多元素个数,可通过内置函数cap()获得。切片是引用类型,因此在当传递
    的头像 发表于 10-09 09:43 366次阅读
    Go<b class='flag-5'>切片</b>的内部实现

    golan共享底层数组的切片

    nil 和空切片 有时,程序可能需要声明一个值为 nil 的切片(也称nil切片)。只要在声明时不做任何初始化,就会创建一个 nil 切片
    的头像 发表于 10-09 09:56 401次阅读
    golan共享底层数组的<b class='flag-5'>切片</b>

    数组中如何增加切片的容量

    切片扩容 相对于数组而言,使用切片的一个好处是:可以按需增加切片的容量。 Golang 内置的 append() 函数会处理增加长度时的所有操作细节。要使用 append() 函数,需
    的头像 发表于 10-09 10:01 390次阅读
    数组中如何增加<b class='flag-5'>切片</b>的容量

    什么是5G切片技术,如何完成端到端的网络切片

    网络切片是一种按需组网的方式,可以让运营商在统一的基础设施上切出多个虚拟的端到端网络,每个网络切片从无线接入网到承载网再到核心网在逻辑上隔离,适配各种类型的业务应用。在一个网络切片内,至少包括无线子
    发表于 10-13 12:22 895次阅读
    什么是5G<b class='flag-5'>切片</b>技术,如何完成端到端的网络<b class='flag-5'>切片</b>

    列表切片操作的特点

    是1,可通过增加第三个参数实现不同切片 步长是-1时,可实现倒序切片 下标缺省时,表示从最"前"到最"后"(这里的前后要结合上下文来看,具体后面有示例) 例如,下面这些常规操作大家应该都很熟悉: 1lyst = list(ran
    的头像 发表于 11-01 16:31 234次阅读