学校网站建设制度,微趋道官网手机小程序制作,微信小程序有什么用处?,可以直接打开的网页# GO types Slice### Author 品茶 Slice(切片)代表变长的序列#xff0c;序列中每个元素都具有相同的类型#xff0c;slice类型写成[]T#xff0c;T代表slice中元素的类型#xff0c;slice的语法和数组很像 只是没有固定长度而已。 slice的底层引用一个数组对象…# GO types Slice### Author 品茶 Slice(切片)代表变长的序列序列中每个元素都具有相同的类型slice类型写成[]TT代表slice中元素的类型slice的语法和数组很像 只是没有固定长度而已。 slice的底层引用一个数组对象三部分组成指针、长度(len)、容量(cap),指针指向第一个slice元素对应的底层数组元素的地址 注意slice的第一个元素并不一定就是数组的第一个元素(有可能是切片后的)。 长度不能超过容量容量一般是从slice的开始位置到底层数据的结尾位置。 长度实际元素个数 容量最大可装载的元素个数超过则对前一个容量*2多个slice之间可以共享底层的数据并且引用的数组部分区间可能重叠~~~func main() {// 定义一个数组months : [...]string{1: January,2: February,3: March,4: Aprill,5: May,6: June,7: july,8: August,9: September,10: October,11: November,12: December,}// 定义一个slice是不需要指定长度的指定了就是数组//s : []int{0,1,2,3,4} // 这是slice定义//s1 : [...]int{0,1,2,3,4} // 数组定义//s2 : [3]int{1,2,3} // 数组定义// 切片操作 s[i:j] 0 i j cap(s)Q1 : months[1:4]Q2 : months[4:7]Q3 : months[7:10]Q4 : months[10:]Summmer : months[6:9]fmt.Println(Q2, Q4)fmt.Println(Q1, Q3)fmt.Println(Summmer[:20])// slice不支持直接比较还是一样需要调用bytes.Equal来进行比较。因为是对底层类型的间接引用(浅拷贝)还是指针值的修改。所以不方便比较// append 向slice追加元素 注意重新分配内存和copy操作 cap cap * 2}~~~