golang——切片

切片是引用数据类型之一(slice、map、chan、Pointer)
基础数据类型是:int float string bool 数组 struct

  1. 初始化方式

直接初始化

//与数组不同的地方在于,不用添加初始长度
var arr []int

make

//初始化长度为5,预留一个10的存储空间,初始值为0
arr := make([]int,5,10)
  1. 长度和容量
//长度就是切片中有多少数字
//容量就是开始位置到底层数组结束位置的数量
var arr []int{1,2,3,4,5,6}
arr1 := arr[2:]
fmt.Printf("长度%v,容量%v",len(arr),cap(arr))//4,4
  1. 添加数据
    扩容策略:小于10242倍扩容,大于则1/4扩容,如果翻倍不能解决就赋值所需要的容量
//添加单个数据
var arr []int
arr = append(arr,1,2,3)
//添加切片
var arr1 []int{1,2}
arr = append(arr,arr1...)//固定写法
  1. 删除元素
//没有指定的函数,只能使用函数拼接的方式进行
a := []int{1,2,3,4,5,6}
a = append(a[:2],a[3:]...)//删除2位置上的值

相同的方法也可以使用在字符串上

//字符串也没有现成的删除函数,因此需要把字符串转换成字符切片进行处理
s := "hello"
sc := []byte(s)
sc[0] = 'a'
fmt.Println(string(sc))
  1. 深拷贝
//切片是引用数据类型呢,如果直接=的话就是同一个切片,如果得到另一个
//一模一样的切片,那就需要copy函数了
src := []int{1,2,3}
dst := make([]int,4,4)
copy(dst,src)
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐