demo.go(切片的截取(不拷贝,只是一种视图窗口),修改截取后的切片也会影响到原切片):
package main
import "fmt"
func main() {
// 定义切片。
slice := []int{0,1,2,3,4,5,6,7,8,9}
// 切片的截取 [起始下标:结束下标]
s := slice[3:6] // 包含下标3,不包含下标6
fmt.Println(s) // [3 4 5]
fmt.Printf("%T \n",s) // []int 切片类型
// 截取全部元素
s = slice[:] // 等同于 s=slice
fmt.Println(s) // [0 1 2 3 4 5 6 7 8 9]
fmt.Printf("%p \n",s) // 0xc000080000 与原切片slice的地址相同(截取并不会拷贝)
fmt.Printf("%p \n",slice) // 0xc000080000
// 切片截取 [low:high:max] 容量:max-low (max>=high,max<=len(原切片))
s = slice[3:6:8]
fmt.Println(s) // [3 4 5]
fmt.Println(cap(s)) // 5 (8-3)
// [n:]截取到末尾 [:n]从起始下标开始截取
}