切片 go 去除第一个_190712Golang从入门到放弃--数组、切片

参考资料

书籍 : Go语言学习笔记

视频 : Google资深工程师深度讲解Go语言

  • 数组的定义
    • 数组:是同一种数据类型的固定长度的序列
    • 定义数组:var a[len]int 比如 var a[5]int
    • 长度是数组类型的一部分,因此 var a[5]int和 var a[10]int是不同的类型
    • 数组可以通过下标访问,下标是从0开始,最后一个元素的下标是:len-1for i:=0;i<len(a);i++{ }
    • 访问越界,如果下标在合法数组之外,则触发访问越界,会panic
    • 调用func f(arr [5]int)会拷贝数组
    • 在go语言中一般不直接使用数组,使用切片
    • 数组是值类型
  • 数组初始化
    • var array[5]int=[5]int{1,2,3}
    • var array=[5]int{1,2,3,4,5}
    • var array=[...]int{1,2,3,4,5,6}
    • var str=[5]string{3:"hello world",5:"henry"}
  • 切片的定义
    • 切片:切片是数组的一个引用,因此切片是引用类型
    • 切片的长度可以改变,因此,切片是一个可变的数组
    • 切片的遍历方式和数组一样,可以用len()求长度
    • cap可以求出slice最大的容量,0<=len(slice)<=cap(array),其中array是slice的数组
    • 定义切片: var 变量名[]类型,比如var str[]string , var arr[]int
    • 数组切片都是半开半闭区间--左边包含,右边不包含 其它语言基本也一样
    • slice本身是没有数据的,是对底层数组的一个视图
    • slice可以向后扩展,不可以向前扩展
    • s[i]不可以超越len(s),向后扩展不可以超越底层数组cap(s)

fa64d276f90e7e2e4beba5bbbbafaa75.png
  • 切片初始化
    • 切片初始化: var slice[]int = arr[start:end] -- 包含start到end的元素,但是不包含end
    • var slice[]int = arr[0:end]可以简写为 var slice[]int=arr[:end]
    • var slice[]int = arr[start:len(arr)]可以简写为 var slice[]int=arr[start:]
    • var slice[]int = arr[0:len(arr)]可以简写为 var slice[]int=arr[:]
    • 如果要把切片最后一个元素去掉,可以写为 slice = slice[:len(slice)-1]
  • make创建切片
    • var slice []type=make([]type,len)
    • slice : = make([]type,len)
    • slice : = make([]type,len,cap)
  • 切片的操作
    • append(切片,数据) s2 :=make([]int,2,4)s2 =append(s2,10)fmt.Println(s3)结果为 : [0 0 10]
      * copy(数据目标,数据源) s1 :=[]int{2,4,6,8}s2 :=make([]int ,16)copy(s2 ,s1)结果为 : [2 4 6 8 0 0 0 0 0 0 0 0 0 0 0 0]
    • 切片去除数据s2= [2 4 6 8 0]fmt.Println("去除切片中间数据: ")s2 = append(s2[:3],s2[4:]...)printSlice(s2)fmt.Println("去除切片片头数据: ") s2 =s2[1:] printSlice(s2)fmt.Println("去除切片片尾数据: ")s2 =s2[:len(s2)-1]printSlice(s2)结果为:去除切片中间数据:s2= [2 4 6 0]去除切片片头数据:s2= [4 6 0]去除切片片尾数据:s2= [4 6]
    • 添加元素时如果超越cap,系统会重新分配更大的底层数组,如果有人用,原来的数组会继续存在,如果没人用,会回收,重新分配底层数组。
    • 由于值传递的关系,必须接收append的返回值s : =append(s,value)
  • 排序和查找
    • 排序和查找主要都在sort包中,导入就可以使用
    • 排序
      • sort.Ints 对整数进行排序
      • sort.Strings 对字符串进行排序
      • sort.Float64s 对浮点数进行排序
    • 查找
      • sort.SearchInte(a []int,b int) 从数组a中查找b,前提a必须有序
      • sort.SearchFloats(a []float64,b float) 从数组a中查找b,前提a必须有序
      • sort.SearchStrings(a []string,b string ) 从数组a中查找b,前提a必须有序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值