go语言开发交流qq群 857263711 保持进步 希望每个人都能找到自己喜欢的方式生活、工作。

go 构造切片slice

定义切片
make([]int, 5)  长度和容量均为5
make([]int, 0, 5) 长度为0 容量为0
切片
slice2[3:5] 对slice2进行切片返回 第3 4 两个元素 不包含index=5这个元素
----------------------------------------------------------------------
package main

import "fmt"

func main() {
    var z []int
    if z == nil {
        fmt.Println("is nil")
    } else {
        fmt.Println("not nil", z)
    }

    //按容量创建切片 并初始化数据为0
    slice1 := make([]int, 5)
    printSlice("slice1", slice1)

    //最大容量为5初始化长度为0
    slice2 := make([]int, 0, 5)
    printSlice("slice2", slice2)
    //容量为slice2 =5 长度为3
    slice3 := slice2[:3]
    printSlice("slice3", slice3)
    //append 追加数据后 超出容量5 增长至5*2=10 ,append后长度为6
    slice3 = append(slice3, 1)
    slice3 = append(slice3, 3)
    slice3 = append(slice3, 9)
    slice3 = append(slice3, 1)
    slice3 = append(slice3, 3,9,10)
    printSlice("slice3", slice3)

    slice4 := slice2[3:5]
    printSlice("slice4", slice4)

    //返回index=3-8 1 3 9 1 3 9
    slice5 := slice3[3:9]
    //slice3 进行切片,因容量是10 切片到index=9 返回3-9的元素 所以正确 slice3[3:11]会报错因为容量为10
    slice6 := slice3[3:10]
    printSlice("slice5", slice5)
    printSlice("slice5", slice6)
}

func printSlice(a string, x []int) {
    fmt.Println()
    fmt.Printf("%s ,len = %d,cap = %d,val = %v", a, len(x), cap(x), x)
}
----------------------------------------------------------------------
切片做为参数传递

 

 

go语言开发交流qq群 857263711

保持进步
希望每个人都能找到自己喜欢的方式生活、工作。

 

posted on 2019-07-15 22:00  送欢  阅读(426)  评论(0编辑  收藏  举报

导航