美文网首页收藏
Go_028_切片的底层存储

Go_028_切片的底层存储

作者: 为宇绸缪 | 来源:发表于2023-08-17 22:30 被阅读0次

切片是对数组的引用,切片里面存三个值。
第1个值: 切片初始值在数组当中的地址
第2个值: 切片的长度,就是切片的结束位置和开始位置相减,使用 len() 查看
第3个值: 切片的容量,数组的长度减去起始的位置,使用 cap() 查看

定义一个数组 var num = [5]int{1, 2, 3, 4, 5}
定义两个切片
切片1: var slice1 = num[0:3] ,结果是 [1 2 3],此时数组长度是3,从开始点(索引为0的位置)到数组结束位置长度为5,因此容量为5
切片2:var slice2 = num[2:4],结果是 [3 4],此时数组长度是2,从开始点(索引为2的位置)到数组结束位置长度为3

package main

import "fmt"

func main() {
    var num = [5]int{1, 2, 3, 4, 5}
    var slice1 = num[0:3]
    var slice2 = num[2:4]
    fmt.Println("slice1的值: ", slice1)
    fmt.Printf("slice1的长度%d, 容量:%d\n", len(slice1), cap(slice1))

    fmt.Println("slice2的值: ", slice2)
    fmt.Printf("slice2的长度%d, 容量:%d", len(slice2), cap(slice2))
}

/*
slice1的值:  [1 2 3]
slice1的长度3, 容量:5
slice2的值:  [3 4]
slice2的长度2, 容量:3
*/

相关文章

  • golang:slice切片

    golang中的切片的索引是左闭右开的,切片不存储数据,它是对数组的引用,其他切片可以跟它共享同一个底层的数组,所...

  • 【golang】slice底层函数传参原理易错点

    切片底层结构 切片的底层结构主要包括引用数组的地址data,切片长度len与切片容量cap。 以切片为参数调用函数...

  • golang - slice

    切片定义 切片是基于数组实现的,它的底层是数组,可以理解为对 底层数组的抽象。切片底层结构并没有使用加锁等方式,不...

  • Go数组和切片区别

    数组是值传递,切片是引用传递 切片可扩容 切片多一个cap属性 切片底层用数组实现

  • day02-07clice

    切片slise 切片的定义 初始化 长度len和容量cap 由数组得到切片 切片的容量cap是指底层数组从切片的第...

  • 2021-05-15 go基础备注

    1、数组是值类型 运行结果 2、切片是引用类型 切片的容量是底层数组的容量 切片是引用类型,都指向了底层的一个数组...

  • 切片操作 append

    append 操作切片,可以追加内容,也可以变相的去除切片中某个子元素,需要注意的是切片本身不存储数据,操作的都是...

  • go 切片的底层实现

    go 数组切片的底层实现 go的切片也就是所谓的可变数组,当创建的时候,会发现大小只为24,原因就是他本质是一个结...

  • go slice append

    go slice append 切片的底层是一个数组,如果截取切片的一部分赋给另一个切片,那这两个切片的数据其实指...

  • 是时候来了解JDK8 HashMap的实现原理了

    一 HashMap底层存储结构 HashMap底层结构采用(数组)+(链表 or 红黑树)的形式来存储节点。...

网友评论

    本文标题:Go_028_切片的底层存储

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