slice基础上

定义:slice表示一个拥有相同类型元素的可变长度的序列
slice有三个属性:指针,长度,容量
指针指向第一个可以从slice中访问的元素,这个元素并不一定是数组的第一个元素

注意:
1.一个底层数组可以对应多个slice
2.slice超过被引用对象的容量,将会宕机

定义slice:

myslice := []int{1, 2, 3, 4}

slice底层是数组,slice可以引用数组的任何位置:

var myarr [9]int = [9]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
slicearr1 := myarr[1:4]

slice引用了数组,会随着数组的值改变而变化

myarr[1] = 100  //slicearr1[0]的值是100

slice用法:

slicearr2 := myarr[:5]
slicearr3 := myarr[5:]
slicearr4 := myarr[:]

求长度:

len(slicearr2)  //结果5
len(slicearr3)  //结果4

求容量:

cap(slicearr2)  //结果9
cap(slicearr3)  //结果4

对string类型求子串,返回值是string:

str := "hello"
slicestr := str[:3]  //类型string

对[]byte类型做slice操作,返回值是[]byte类型:

myBytes := []byte("hello world!")  //**注意字符串转化成[]byte是圆括号**
slicemyBytes := myBytes[:5]  //类型[]byte

slice比较:
bytes.Equal可比较两个[]byte类型,不可以直接用==比较,唯一用==比较是和nil。
其他类型比较则需要实现。

内置函数make,创建一个指定元素类型,长度和容量的slice,参数容量可省略

myslice2 := make([]int, 5, 10)  //make创建一个无名数组并返回了它的一个slice

猜你喜欢

转载自blog.csdn.net/weixin_42506905/article/details/81320646