slice[1:3]slice[1:3:5]
简单表达式
一个冒号, 两个参数, 表示 slice 元素的 起止区间
a[low:high]
package main
import (
"fmt"
)
func main() {
a := [5]int{1, 2, 3, 4, 5}
s := a[1:4] // [2,3,4]
fmt.Println(s)
s1 := a[2:] // 等价于 a[2 : len(a)
s2 := a[:3] // 等价于 a[0 : 3]
s3 := a[:] // 等价于 a[0 : len(a)]
fmt.Println(s1, s2, s3)
}
完整表达式
两个冒号, 三个数字, 分别表示 slice 的 起、止和最大值
a[low:high:max]
high-lowmax-low
package main
import (
"fmt"
)
func main() {
a := [...]int{1, 2, 3, 4, 5, 6, 7, 8}
t := a[1:3:5] // [2 3]
fmt.Println(t, len(t), cap(t)) // [2 3] 2 4
// a[1:3] 可以认为是 a[1:3:n] 其中
n := len(a)
s1 := a[1:3]
s2 := a[1:3:n]
fmt.Println(s1, len(s1), cap(s1)) // [2 3] 2 7
fmt.Println(s2, len(s2), cap(s2)) // [2 3] 2 7
}