Golang 入门资料+笔记程序员Golang

golang 基础(fourteen)slice

2019-03-18  本文已影响45人  zidea
square-gopher.png

(slice)切片


slice.png

slice 是动态地表述数组的片段
每一个 slice 都包含一个指向数组的片段的指针 ptr,一个 len 用于表示数组片段的长度以及 cap 表示片段可扩展能力。

slice_illustration.JPG
func main(){
    arr := [...]int{0,1,2,3,4,5,6,7}
    s := arr[2:6] //[2 3 4 5]
    fmt.Println(s)
}

s 就可以理解为数组 arr 的切片,在计算机中通常截取是半开半闭原则所以 2 是被包含进去而 6 不被包含。

fmt.Println("arr[2:6] = ",arr[2:6])
    fmt.Println(arr[2:])
    fmt.Println(arr[:6])
    fmt.Println(arr[:])

结果自己尝试吧

slice 的长度和可扩展

s := arr[2:6]
    fmt.Println(cap(s)) //6
    fmt.Println(len(s)) //4

长度就不解释,扩展是就是 arr 在 slice 后面还剩几个元素就是 slice 几位可扩展。

还可以对 slice 进行取 slice

s = s[:3]
    fmt.Println(s) //[2 3 4]
    s = s[2:]//[4]
    fmt.Println(s)

那么可以进一步研究一下下面的代码,看一看扩展的用途,这里注意一下 s1 从 s 中进行取值,取值范围已经超出的 s 的长度,但是因为没有超出其扩展,所以 s1 会从数组 arr 进行取值。

s := arr[2:6]
    fmt.Println(cap(s)) //6
    fmt.Println(len(s)) //4

    s1 := s[3:5]
    fmt.Println("s = ",s)
    fmt.Println("s1 = ",s1)
s =  [2 3 4 5]
s1 =  [5 6]
slice_extension.JPG slice_extension_02.JPG
上一篇下一篇

猜你喜欢

热点阅读