美文网首页
Go语言之切片(Slice)

Go语言之切片(Slice)

作者: 测试探索 | 来源:发表于2020-05-28 23:26 被阅读0次
一:初识
  1. 定义切片
    var 切片名 [] type
    切片不需要说明长度,或使用make()函数来创建切片
  2. make()
  3. 理解
  • 每一个切片引用了一个底层数组,切片是引用类型
  • 切片本身不存储任何数据,都是这个底层数组存储,所以修改切片也就是修改这个数组中的数据
  • 当向切片中添加数据时,如果没有超过容量,直接添加,如果超过容量,自动扩容(成倍增长,开辟新的空间,指向新的空间地址 )
  • 切片一旦扩容,就是重新指向一个新的底层数组
func make(t Type,size ...IntegerType) Type
  • 第一个参数:类型
      slice,map,chan
  • 第二个参数:长度len
      实际存储元素的数量
  • 第三个参数:容量cap
      最多能够存储的元素的数量
package main

import "fmt"

func main() {
    //数组
    arr := [4] int {1,2,3,4}
    fmt.Println(arr)

    //切片
    s2 := [] int {5,6,7,8}
    fmt.Println(s2)
    fmt.Printf("arr数据类型是%T,s2数据类型是%T\n",arr,s2)

    s3 := make([]int,3,8)
    fmt.Println(s3)
    fmt.Printf("s3容量:%d,长度:%d\n",cap(s3),len(s3))
    s3[0] = 1
    s3[1] = 2
    s3[2] = 3
    fmt.Println(s3)

    //append
    s4 := make([]int,0,5)
    fmt.Println("s4",s4)
    s4 = append(s4,1,2)
    fmt.Println("s4",s4)

    //把s3中的内容加到s4里
    s4 = append(s4,s3...)

    fmt.Println("把s3切片加到s4中:", s4)
}
//结果
[1 2 3 4]
[5 6 7 8]
arr数据类型是[4]int,s2数据类型是[]int
[0 0 0]
s3容量:8,长度:3
[1 2 3]
s4 []
s4 [1 2]
把s3切片加到s4中: [1 2 1 2 3]

二:在已有的数组上直接创建slice

import "fmt"

func main() {
    a := [10] int {1,2,3,4,5,6,7,8,9,10}
    s1 := a[:5] //1-5
    s2 := a[3:8] //4-8
    s3 := a[5:] // 6-10
    s4 := a[:] //1-10
    fmt.Println("a",a)
    fmt.Println("s1",s1)
    fmt.Println("s2",s2)
    fmt.Println("s3",s3)
    fmt.Println("s4",s4)
}
//结果
a [1 2 3 4 5 6 7 8 9 10]
s1 [1 2 3 4 5]
s2 [4 5 6 7 8]
s3 [6 7 8 9 10]
s4 [1 2 3 4 5 6 7 8 9 10]
image.png

相关文章

  • Go语言之切片(Slice)

    一:初识 定义切片var 切片名 [] type切片不需要说明长度,或使用make()函数来创建切片 make...

  • 【go笔记】切片(slice)结构的简介

    我们java里有个ArrayList, 那go有切片(slice)。看起来有点像,但是了解切片(slice)结构后...

  • 深入理解 Go Slice

    原文地址:深入理解 Go Slice 是什么 在 Go 中,Slice(切片)是抽象在 Array(数组)之上的特...

  • Go 切片(slice)

    Go中,数组的长度是不可变的,但是Go提供了一种灵活的内置类型:切片(也称为动态数组)。 切片的长度不固定,可以追...

  • 七、Go切片

    七、Go语言切片(Slice) Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就...

  • go 语言切片

    go 语言切片 简单切片 slice 是 对 array 的一个 view 创建简单切片 切片作为函数参数 对切...

  • 七.Go切片slice

    切片slice 本身并不是数组,它指向底层的数组 作为变长数组的替代方案,可关联底层数组的局部或全部 数据类型为引...

  • Go语言切片(Slice)

    Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,...

  • Go之Slice(切片)

    内部结构 切片表面上用起来像是一个可变数组,但它其实是一个结构体,内部结构如下: 切片分为三个参数 指针,指向一片...

  • Golang之数组和切片

    引用 数组、字符串和切片 Go数组中的索引问题 深入解析 Go 中 Slice 底层实现 Golang 入门 : ...

网友评论

      本文标题:Go语言之切片(Slice)

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