本网站可以通过分类标签帮助你快速筛选出你想看的文章,记住地址:www.Facec.cc

Golang切片详解

切片的声明

var arr1 []int
var arr2 = []int{1,2,34,45}
var arr3 = []int{1:2,2:4,3:6}
var arr4 = []int{1:2,2:4,5:6}

//make()创建一个切片 make([]T,len,cap)
var arr5 = make([]int,4,8)//[0 0 0 0]

golang切片定义的初始值

切片的循环遍历

var arr1 = []string{"php","java","nodejs","golang"}
for i:=0;i<len(arr1);i++{
	fmt.Println(arr1[i])
}

for idx,v :=range arr1{
	fmt.Println(idx,v)
}

// 复制一份新的切片,arr1可以为一个数组
// 将数组转换为切片,左闭右开
copy_arr = arr1[:]

切片的长度和容量

  • 使用内置函数len()求长度,cap()求容量
  • 长度:切片中元素的个数
  • 容量:从第一个元素开始数,到其底层数组元素末尾的个数
s := []int{12,34,64,48,78,11}// 6, 6
fmt.Printf("长度:%d 容量:%d",len(s),cap(s))// 6, 6

a:= s[2:]// len,cap:4,4
b:= s[1:3]//len,cap:2,5
c:= s[:3]// len,cap:3,6

切片的本质

image.png
image.png

切片的扩容

不能直接使用arr1[1]=1扩容,提示越界
golang给切片扩容采用append()方法,arr1=append(arr1,19)

append还可以合并两个切片
arr1 = append(arr1,arr2...)

切片是引用传递

arr1 := []int{1,2,3,45}
arr2 := arr1//此时修改arr2就会引起arr1的改变

解决方法:copy()
arr2 := make([]int,4,4)
copy(arr2,arr1)

切片删除元素

//删除第三个元素-32
a := []int={30,31,32,33,34,35,36,37}
a = append(a[0:2],a[3:]...)

字符串修改中间字符

image.png

# golang  

评论