• 【笔记】go语言切片的操作


    go语言--切片的操作

    接上篇切片的概念开始

    //Slice添加元素
    arr := [...]int{0,1,2,3,4,5,6,7}
    s1 := arr[2:6]
    s2 := s1[3:5]//[5 6]
    s3 := append(s2,10)//[5 6 10]
    s4 := append(s3,11)//[5 6 10 11]
    s5 := append(s4,12)//[ 5 6 10 11 12],其中s4和s5被分配到一个新的array中
    

    也就是说,添加元素是如果超越了cap,则系统会重新分配更大的底层数组,如果arr还有人用的话就会存在,如果没有使用的话则会被垃圾回收机制回收掉

    同时由于值传递的关系,必须接受append的返回值,一般写成s = append(s,val)

    Slice的创建

    //1
    var s []int //go语言每个变量一旦定义都一个zero value nil,此时s=nil(可以添加元素,go语言nil也不会崩溃)
    //2
    s1 := []int {2,4,6,8}
    //3
    s2 := make([]int,16)//len和cap都是16
    s3 := make([]int,10,32)// len=10, cap=32
    //4
    copy(s2,s1)//拷贝,des=s2,source=s3,得到[2 4 6 8 0 0 0 0 0 0 0 0 0 0 0 0],len=16,cap=16
    //5
    s2 = append(s2[:3], s2[4:]...)//delete,跳掉下标为3的
    //6
    front := s2[0]//popping from front
    s2 = s2[1:]//[4 6 0 0 0 0 0 0 0 0 0 0 0 0],len=14,cap=15
    //7
    tail := s2[len(s2) - 1]//popping from back
    s2 = s2[:len(s2) - 1]//[4 6 0 0 0 0 0 0 0 0 0 0 0],len=13,cap=15
    
  • 相关阅读:
    IntelliJ IDEA如何导入Gradle项目
    C#对图像像素处理的三种方式
    用BitBlt截取整屏后半透明窗口不能显示的解决办法
    Kestrel gRPC
    aspnetcore datetime json格式化
    netcore rabbitMq
    Nginx 1.8 单元控制文件
    mysql 单元控制文件
    redis 单元控制文件
    devtoolset对应gcc的版本
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/15824475.html
Copyright © 2020-2023  润新知