zoukankan      html  css  js  c++  java
  • golang切片类型

    切片slice

    • 其本身并不是数组,它指向底层的数组
    • 作为变长数组的替代方案,可以关联底层数组的局部或全部
    • 为引用类型
    • 可以直接创建或从底层数组获取生成
    • 使用len()获取元素个数,cap()获取容量
    • 一般使用make()创建
    • 如果多个slice指向相同底层数组,其中一个的值改变会影响全部
    • make([]T,len,cap)
    • 其中cap可以省略,则和len的值相同
    • len表示存数的元素个数,cap表示容量

    slice的定义方式

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	/*
    	a := [10]int{}
    	fmt.Println(a)
    	s1 := a[5:]
    	// s1 := a[5:len(a)]
    	// s1 := a[5:10]
    	fmt.Println(s1)
    	*/
    	s1 := make([]int,3,10)
    	fmt.Println(s1,len(s1),cap(s1))
    }
    

    slice与底层数组的对应关系

    Reslice

    • reslice时索引以被slice的切片为准
    • 索引不可以超过被slice的切片的容量cap()值
    • 索引越界不会导致底层数组的重新分配而是引发错误

    Append

    • 可以在slice尾部追加元素
    • 可以将一个slice追加到slice的容量则返回原始slice
    • 如果最终长度未超过追加到slice的容量则返回原始slice
    • 如果超过追加到的slice容量则将重新分配数组并拷贝原始数据

    copy

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	s1 := []int{1,2,3,4,5,6}
    	s2 := []int{7,8,9}
    	// copy(s2,s1)
    	copy(s2[2:4],s1[1:3])    // s2: dest, s1: src
            fmt.Println(s2)
    }
    
  • 相关阅读:
    C#学习笔记-类的一些基本成员
    SpringBoot 好“吃”的启动原理
    线程与进程
    powerdesiner
    maven
    Java反射
    获取类的全部信息 本地方法
    今天在看慕课网的java学习路径
    操作系统之哲学原理
    今天在看慕课网的java学习路径
  • 原文地址:https://www.cnblogs.com/Csir/p/9292146.html
Copyright © 2011-2022 走看看