切片
Go语言切片的内部结构包含地址、大小和容量。切片一般用于快速地操作一块数据集合。如果将数据集合比作切糕的话,切片就是你要的“那一块”。切的过程包含从哪里开始(这个就是切片的地址)及切多大(这个就是切片的大小)。容量可以理解为装切片的口袋大小。
声明切片
//var NAME []T
var strSlice []string //nil
var numSlice []int // !nil声明但未使用的切片的默认值是nil
从数组或切片生成新的切片
package main
import "fmt"
func main() {
arr := [6]int{1,2,3,4,5,6}
fmt.Println(arr[2:4]) //[3,4]
}从数组或切片生成新的切片拥有如下特性:
取出的元素数量为:结束位置-开始位置。
取出元素不包含结束位置对应的索引,切片最后一个元素使用slice[len(slice)]获取。
当缺省开始位置时,表示从连续区域开头到结束位置。
当缺省结束位置时,表示从开始位置到整个连续区域末尾。
两者同时缺省时,与切片本身等效。
两者同时为0时,等效于空切片,一般用于切片复位。
根据索引位置取切片slice元素值时,取值范围是(0~len(slice)-1),超界会报运行时错误。生成切片时,结束位置可以填写len(slice)但不会报错。
生成切片的格式中,当开始和结束都范围都被忽略,则生成的切片将表示和原切片一致的切片,并且生成的切片与原切片在数据内容上是一致的
使用make创建切片
使用append()函数为切片添加元素
当空间不能容纳足够多的元素时,切片就会进行“扩容”。“扩容”操作往往发生在append()函数调用时。切片在扩容时,容量的扩展规律按容量的2倍数扩充。
切片合并
复制切片元素到另一个切片
从切片中删除元素
Go语言中切片删除元素的本质是:以被删除元素为分界点,将前后两个部分的内存重新连接起来。
最后更新于