go语言基础 切片 slice

本文详细介绍了Go语言中的切片概念及其用法,包括切片的创建方式、切片的类型、切片与数组的区别等,并通过实例展示了如何操作切片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

切片:slice

理解为变长的数组
A:切片创建
s1:=[]int{1,2,3,4,5}
s2:=make([]T,len,cap)
arr := [5]int{1,2,3,4,5}
s3 := arr[start:end] // 切割数组:[start,end)
s4:=arr[:]


B:切片的类型:
[]数据类型
切片属于引用类型:
s1:=[] int{1,2,3,4}

s2:=s1

package main

import "fmt"

func main()  {
   /*
   数组的特点:
   有序(有下标),可以重复,数据可以被修改,但是长度不能修改(定长)。
   切片:变长,长度可以改变。
   容器:
      len(),cap()
    */
    // 创建数组
    a := [4]int{1,2,3,4}
    fmt.Println(len(a))
    fmt.Println("数组的:",len(a),cap(a))
    // 创建切片1.直接创建
    s1 := [] int{1,2,3,4,5,6,7,8}
    fmt.Println(s1)
    fmt.Println("切片的:",len(s1),cap(s1)) // 8 8
    fmt.Printf("%T\n", s1) // []int
    s2 :=[]int{} // 创建了一个空的切片
    fmt.Println(len(s2), cap(s2)) // 0 0

    // 2.使用make([]T, len,cap) cap如果不给数值,那么和len一致。
    s3 := make([]int, 3, 8)
    fmt.Println(s3) // [0 0 0]
    fmt.Println(len(s3),cap(s3)) // 3 8

    //3.在数组的基础上创建切片
    b := [10]int{1,2,3,4,5,6,7,8,9,10}
    s4 := b[2:6] // 数组名[start:end)
    fmt.Println(s4)//[3 4 5 6]
    fmt.Println(len(s4), cap(s4)) // 4 8
    s5 := b[:6] // [0:6],从头开始,切割刀下标6(不包含6)
    fmt.Println(s5)
    s6 :=b[6:] // [start:],从start开始,切割刀最后
    fmt.Println(s6)
    //s7 := b[4:12] // invalid slice index 12 (out of bounds for 10-element array)
    //fmt.Println(s7)





} 
关键字

len()测量数组或者切片的长度

cap()测量切片的总长度 ,如果超出最大值,切片会扩容

append()增加切片中的内容可以传值,也可以把两个切片拼在一起

append(slice, ele1,ele2,ele3)
append(slice1,slice2...)

copy()拷贝切片

package main

import "fmt"

func main()  {
   /*
   copy(dst,src)
    */
    s1:=[]int{1,2,3,4,5}
    s2:=[]int{7,8,9}
    fmt.Println(s1)
    fmt.Println(s2)
    //copy(s1,s2) //将s2拷贝到s1中
    //copy(s2, s1) // 将s1中的数据,拷贝到s2中。
    //copy(s2, s1[2:4])// 将s1中3-4 的数据,拷贝到s2中
    copy(s2[1:] , s1[2:4])
    fmt.Println(s1)
    fmt.Println(s2)
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值