在Go中,为什么对于容量= 1的切片,a [1:]为什么不给出超出范围的索引错误?

wgl:

为什么以下代码没有给出“切片边界超出范围”错误?

a := []int{0}
a = a[1:]
fmt.Println(a) // []
阿尼斯:

因为切片表达式的Go规范指出:

对于字符串,数组,指向数组的指针或切片a,主表达式

a [低:高]

构造一个子字符串或切片。

...

为了方便起见,可以省略任何索引。缺少的低索引默认为零;缺少的高索引默认为切片操作数的长度:

a [2:] //与a [2:len(a)]相同

...

对于数组或字符串,如果0 <=低<=高<= len(a),则索引在范围内,否则它们超出范围。

在您的情况下,len(a)为1,并且a[1:]与相同a[1:1],表示它在范围内。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Python允许序列使用超出范围的切片索引?

golang:为什么以下代码不会因“切片索引超出范围”而发生错误

为什么浮点切片(片0,1,0.1)()允许蟒蛇,但在调用方法的索引(切片(0,1,0.1).indices)抛出类型错误?

为什么在go中切片比索引1的长度多但不超过长度

[::-1] 在 python 中是什么意思 - 切片?

摘自“ A Go of Go”-为什么该切片会更改其容量?

为什么切片不切片数组?

为什么在 Go 中追加切片会改变原始切片?

在这种情况下,为什么不报告“切片范围超出范围”?

为什么切片的容量不会随着“ [:0]”而减少

为什么这段代码会导致切片超出范围?

为什么我的两个切片之一会因“运行时错误:索引超出范围”而感到恐慌?

为什么在列表的求和部分发生切片索引错误?

GoLang:检查切片2中是否包含切片1中的项目。如果包含,请移除切片2。

为什么花式索引与numpy中的切片不同?

为什么切片准确发生?

为什么开始比切片慢

去切片长度为容量-1,为什么?

为什么间隔长度为1时R列间隔切片不起作用?

为什么GO中切片的内容未更改?

我只能使用 [0:1] 之类的切片窗口对我的 pandas 数据框进行切片以获取特定行,为什么 [0 会引发 KeyError?

为什么切片和范围上限是互斥的?

为什么切片和范围上限是互斥的?

Swift中的切片是什么?

Python列表切片[-1:]和[-1]有什么区别吗?

加密的聊天中的“运行时错误:切片范围超出范围”

为什么扩展的切片分配比常规的切片分配不那么灵活?

Go中的切片类型有什么意义?

索引错误:在“for i in range(len(x)):”中列出超出范围的索引