返回介绍

切片表达式

发布于 2024-10-12 12:51:51 字数 1195 浏览 0 评论 0 收藏 0

切片表达式可以基于字符串、数组、数组指针、切片创建字符串子串或切片。它有两种变体,一种是简单的格式是指定开始和结束位置,完全格式的语法还可以指定容量。

####### 简单切片表达式

对于数组、字符串、指针数组、切片 a,主要表达式:

a[low:high]

可以构造字符串子串或切片。索引 lowhigh 决定结果切片中的元素。结果切片的索引从 0 开始,长度为 high - low 。从数组切分出的切片 s 拥有类型 []int ,长度为 3 ,容积为 4。

a := [5]int{1, 2, 3, 4, 5}
s := a[1:4]
s[0] == 2
s[1] == 3
s[2] == 4

为了方便起见,索引值都可以缺省。当 low 缺省时默认从 0 开始。当缺 high 缺省时默认的取切片的长度。

a[2:]  // same as a[2 : len(a)]
a[:3]  // same as a[0 : 3]
a[:]   // same as a[0 : len(a)]

如果 a 是一个数组指针,那么 a[low:high] 可以表示 (*a)[low : high]

对于数组或者字符串,索引的范围是 0<=low<=high<=len(a) 。对于切片,最大的索引值可以为切片的容量,而不是切片的长度。常量索引必须为非负数,且能够转换成 int 类型。对于数组或者常量字符串。常量索引值必须在合法范围内。如果 2 个索引都是常量。low 必须小于 high。如果索引在运行时访问了非法内存,程序会发生运行时恐慌。

除了无类型字符串,对于切片和字符串的操作结果是非常量类型的值,它的类型与运算元相同。如果运算元为无类型字符串,那么结果类型会为 string。如果把数组作为运算元,它必须是可寻址的,并且获得的切片和原数组具有同一元素类型。

如果切片运算元为 nil,那么结果也是 nil。否则结果切片会和运算元共享相同的底层无类型数组。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文