Golang 基础-数据类型-数组和切片

  1. 切片的底层是数组
  2. [3]int 和 [4]int 不是同一类型,因为长度也是数组的一部分
// runtime/slice.go
type slice struct {
    array unsafe.Pointer // 元素指针
    len   int // 长度 
    cap   int // 容量
}

分析代码输出:

package main

import "fmt"

func main() {
    slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    // s1从slice的索引2(闭区间)到索引5(开区间,元素真正取到索引4)长度默认到slice末尾
    s1 := slice[2:5]
    // s2 从 s1 的索引2(闭区间)到索引6(开区间,元素真正取到索引5)
    // 容量到索引7(开区间,真正到索引6),为5
    s2 := s1[2:6:7]

    s2 = append(s2, 100)
    s2 = append(s2, 200)

    s1[2] = 20

    fmt.Println(s1)
    fmt.Println(s2)
    fmt.Println(slice)
}
posted @ 2024-05-13 07:07  李俊呈  阅读(2)  评论(0编辑  收藏  举报