登录
首页 >  Golang >  Go问答

可以这样重写标题:为什么子列表可以工作,即使只有一个元素的列表?

来源:stackoverflow

时间:2024-03-23 20:54:29 442浏览 收藏

**子列表如何运作,即使列表中只有一个元素** 尽管列表中没有索引为 1 的元素,但子列表 list[1:] 仍能正常工作,这是因为语言定义了它的有效性。子列表中的索引是指向元素之间的位置,因此 list[1:] 是一个空切片,因为它从列表的第二个元素之后开始。即使列表中只有一个元素,空切片仍然有效,因为它从列表的第二个元素之后开始,而该元素不存在。

问题内容

一个切片只有一个元素,名为list,为什么子切片list[1:]可以工作? 例如:

list := []int{1}
fmt.Println(list[1:])
fmt.Println(list[1])

列表中没有索引为 1 的元素,因此第三行会导致“panic: runtime error: index out of range”,但为什么第二行效果很好?


解决方案


嗯,语言只是定义这是有效的。

将子切片中使用的索引视为指向元素“之间”:

Slice a Elements:   | 0 | 1 | 2 | 3 | 4 | 5 |
Subslice a[2:]              ^===============
Subslice a[2:4]             ^===========^
Subslice a[6:]                              ^

您的列表[1:]空切片的切片。

以上就是《可以这样重写标题:为什么子列表可以工作,即使只有一个元素的列表?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>