【发布时间】:2020-01-15 13:28:48
【问题描述】:
我有以下代码:
package main
import (
"fmt"
)
func main() {
primes := []int{2, 3, 5, 7, 11, 13}
for i, _ := range primes {
s := i + 1
fmt.Printf("%v => %v\n", s, primes[s:])
}
}
它会产生以下值:
1 => [3 5 7 11 13]
2 => [5 7 11 13]
3 => [7 11 13]
4 => [11 13]
5 => [13]
6 => []
问题是,为什么这里没有出现恐慌,应该是超出了范围。为什么索引 6 有一个空切片? slice 像函数式编程中的列表吗?
【问题讨论】:
-
没有理由恐慌,可以创建一个空的子切片,即使在切片的末尾也是如此。 “切片就像函数式编程中的列表吗?”没有。
-
为什么是空的?这就是重点,我不明白。
-
prines 中有 6 个元素,并且 [6:6](或 [6:])是有效切片。不过它是空的。
-
从6m开始到6m结束要跑多少米:0米。
-
@Volker 哇很好的解释。