美文网首页
2023-10-26

2023-10-26

作者: 护念 | 来源:发表于2023-10-25 22:43 被阅读0次

    今日总结

    今日学习了go的slice,内容比较多没看完。

    学到的知识点

    1. 创建切片的方式

    make最多

    // 方式1. var
    var a []int  // 此时切片是空的 
    
    // 方式2. make
    b1 := make([]int, 2)  // 后两位参数分别为 len、cap 此时 len == cap
    b2 := make([]int,2, 4) // len=2 --会初始化两个元素0, cap的为4
    
    // 方式3 直接初始化值
    c := []int{1,2,3,4}
    c1 := []int{0,1,2,3, 8: 100} // 这里8代表最大索引为8,最后一个元素是100
    等效于 {0, 1, 2, 3, 0, 0, 0, 0, 100}
    
    // 方式4: 切片中切出
    aa = []int{1,2,3,4,5}
    bb := [1:3] // 左包含右边不包含
    

    2. 切片是引用,切出来的东东仍然是引用

    底层是数组,它的容量可以自动扩展,当达到容量后,自动扩容,会有开销

    3. 切片中切的几种写法

    记住原则

    1. [low:hight] 左包含 右边不包含
    2. [:hight] 或 [low:] 或 [:]凡是没写具体值,都认为它是定格处理,也就达到原切片最左/最右位置
    3. [low:high:max] // 三个参数,前两个和原来意义一样;多出的一个代表最大索引,变相指定了cap=max-low

    4. 切片类型是切片

    // 二维切片
    data := [][]int{
      {1, 2, 3},
      {4, 5, 6},
      {7, 8, 9}, // 最后一行必须要逗号
    }
    
    fmt.Printf("data: %#v\n", data)
    
    // 和上面写法等价 但是冗余了
    // data := [][]int{
    //  int{1,2,3},
    //  int{4,5,6},
    //  int{7,8,9},
    //}
    

    明日安排

    继续学习未完成的slice部分,然后开始学习数组。

    相关文章

      网友评论

          本文标题:2023-10-26

          本文链接:https://www.haomeiwen.com/subject/hvcyidtx.html