zoukankan      html  css  js  c++  java
  • go切片

    切片slice

    切片slice是对数组array的引用,多个slice可以指向相同的数组,并且支持动态扩展长度,这一点类似于C++中的std::vector<T>

    创建slice

    序号 方式 代码示例
    1 直接声明 var slice []int
    2 new slice := *new([]int)
    3 字面值 slice := []int{}
    4 make slice := make([]int, len, cap)
    5 从数组或切片中截取 slice := array[0:5]或slice := sourceSlice[0:5]

    nil切片和空切片

    nil切片和空切片的len和cap都为0,不同的是nil切片中保存的指针为0,而空切片中的指针则指向一个固定的值(预先设定好的空数组对象地址);所以nil切片和nil比较为true,空切片和nil比较为false

    func main() {
        s1 := []int{}
        var s2 []int
        fmt.Println(s1 == nil) //false
        fmt.Println(s2 == nil) //true
    }
    

    append追加元素

    slice进行元素的追加的时候,使用系统的append函数,这时行为和C++中的std::vector<T>push_back类似,即超出当前容量后,会以2倍的增速重新申请空间,得到一个新的底层数组:

    func main() {
        s1 := []int{}
        s1 = append(s1, 1, 2, 3)
        fmt.Println(s1) // [1 2 3]
    }
    
  • 相关阅读:
    Leetcode#145 Binary Tree Postorder Traversal
    Leetcode#146 LRU Cache
    单引号和双引号的区别
    $* $@ $#
    pthread_detach
    pthread_join
    intent 启动activity、service的方法
    multicast based on udp
    ARM指令系统
    ARM寄存器
  • 原文地址:https://www.cnblogs.com/HachikoT/p/13742115.html
Copyright © 2011-2022 走看看