length长度

来源:5-3 Go语言-切片的更多操作方法

qq_安浅若_0

2018-03-21 10:32

length = 7是为什么啊

写回答 关注

5回答

  • 就是不服_
    2019-02-23 20:53:32

    ```

    package main


    import "fmt"


    func main() {

        var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

        

        // 切片下标4~6 容量上界到8 

        // slice5 = [5 6] * *,  实际长度为2  容量为4

        // 后面两个*代表上界最多扩容到下标8 [5,6,7,8]

        slice5 := numbers4[4:6:8]      

        length := (2)                   

    capacity := (4)                 

    fmt.Printf("%v, %v\n", length == len(slice5), capacity == cap(slice5))



    // s1[:cap(s1)] 代表将其扩容到最大值

        // 对其进行扩容 slice5[:4] 扩容到长度为4

        // 在切片后方追加元素 [5,6,7,8,11,12,13]

        // 4+3  长度为7                                            

    slice5 = slice5[:cap(slice5)]                 

    slice5 = append(slice5, 11, 12, 13)         

    length = (7)                                

    fmt.Printf("%v\n", length == len(slice5))



    // copy 参数2的元素 覆盖掉参数1值中的相应位置 (索引值)

    // [5,6,7,8,11,12,13] <-[0,0,0]

    // [0,0,0,8,11,12,13] 

        //  0 1 2 3 4      

    slice6 := []int{0, 0, 0}                    

    copy(slice5, slice6)                        

    e2 := (0)

    e3 := (8)

    e4 := (11)

    fmt.Printf("%v, %v, %v\n", e2 == slice5[2], e3 == slice5[3], e4 == slice5[4])

    }

    ```

  • 小草12135
    2018-08-14 10:06:47

    slice5 := numbers4[4:6:8]

    slice5 = int[]{5,6}

    slice5 = slice5[:cap(slice5)]

    slice5 = int[]{5,6,7,8,9}

    slice5 = append(slice5, 11, 12, 13)

    slice5 = int[]{5,6,7,8,9,11,12,13}

    所有 len(slice5)=7


  • 小来小去4048647
    2018-06-28 10:44:11

    要想知道他为什么是7 那就要看上一段代码中cap(slice5) 它的容量是多少,slice5 := numbers4[4:6:8] 这里有第三个数值8 就是这个切片的容量上边界,也就限制了它本身底层数组的长度从原来的10变成了8,容量的求值是数组长度减去下边界的绝对值,所以是8-4=4,后面的语句append对slice5进行了扩容,加了三个数11,12,13,所以len(slice5) = 7

  • LavenderZ
    2018-04-16 13:19:04

    你可以对照着题目看一下过程

    len(slice5)=2

    cap(slice5)=4

    slice5 = slice5[:cap(slice5)]

    len(slice5)=4

    slice5 = append(slice5, 11, 12, 13)

    len(slice5)=7

    so,length=7

  • qq_安浅若_0
    2018-03-21 10:32:43

    不是8吗

Go语言第一课

Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础

107752 学习 · 148 问题

查看课程

相似问题