全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

golan共享底层数组的切片

时间:2023-10-09 09:56

人气:

作者:admin

标签:

导读:nil 和空切片 有时,程序可能需要声明一个值为 nil 的切片(也称nil切片)。只要在声明时不做任何初始化,就会创建一个 nil 切片。 var num [] int 在 Golang 中,nil 切片是很常见的创建切片...

nil 和空切片

有时,程序可能需要声明一个值为 nil 的切片(也称nil切片)。只要在声明时不做任何初始化,就会创建一个 nil 切片。

var num []int

在 Golang 中,nil 切片是很常见的创建切片的方法。nil 切片可以用于很多标准库和内置函数。在需要描述一个不存在的切片时,nil 切片会很好用。比如,函数要求返回一个切片但是发生异常的时候。下图描述了 nil 切片的状态:

图片

空切片和 nil 切片稍有不同,下面的代码分别通过 make() 函数和字面量的方式创建空切片:

num := make([]int, 0)      // 使用 make 创建空的整型切片

num := []int{}             // 使用切片字面量创建空的整型切片

空切片的底层数组中包含 0 个元素,也没有分配任何存储空间。想表示空集合时空切片很有用,比如,数据库查询返回 0 个查询结果时。

不管是使用 nil 切片还是空切片,对其调用内置函数 append()、len() 和 cap() 的效果都是一样的。

共享底层数组的切片

需要注意的是:现在两个切片 num 和 myNum 共享同一个底层数组。如果一个切片修改了该底层数组的共享部分,另一个切片也能感知到:

// 修改 myNum 索引为 1 的元素
// 同时也修改了原切片 num 的索引为 2 的元素
myNum[1] = 35

把 35 赋值给 myNum 索引为 1 的元素的同时也是在修改 num 索引为 2 的元素:

图片

切片只能访问到其长度内的元素

切片只能访问到其长度内的元素,试图访问超出其长度的元素将会导致语言运行时异常。在使用这部分元素前,必须将其合并到切片的长度里。下面的代码试图为 num 中的元素赋值:

// 修改 newNum 索引为 3 的元素
// 这个元素对于 newNum 来说并不存在
newNum[3] = 45

上面的代码可以通过编译,但是会产生运行时错误:panic: runtime error: index out of range

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信