文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
切片表达式
切片表达式可以基于字符串、数组、数组指针、切片创建字符串子串或切片。它有两种变体,一种是简单的格式是指定开始和结束位置,完全格式的语法还可以指定容量。
####### 简单切片表达式
对于数组、字符串、指针数组、切片 a,主要表达式:
a[low:high]
可以构造字符串子串或切片。索引 low
和 high
决定结果切片中的元素。结果切片的索引从 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论