day6 切片

master
独孤伶俜 2022-11-20 17:03:13 +08:00
parent ae9db382cc
commit 0247d394ee
1 changed files with 54 additions and 0 deletions

54
src/study/day6/slice.go Normal file
View File

@ -0,0 +1,54 @@
package main
import (
"fmt"
)
// Slice切片代表变长的序列序列中每个元素都有相同的类型。、
// 一个slice类型一般写作[]T其中T代表slice中元素的类型
// slice的语法和数组很像只是没有固定长度而已。
// 数组和slice之间有着紧密的联系。
// 一个slice是一个轻量级的数据结构
// 提供了访问数组子序列(或者全部)元素的功能,
// 而且slice的底层确实引用一个数组对象。
// 一个slice由三个部分构成指针、长度和容量。
// 指针指向第一个slice元素对应的底层数组元素的地址
// 要注意的是slice的第一个元素并不一定就是数组的第一个元素。
// 长度对应slice中元素的数目长度不能超过容量
// 容量一般是从slice的开始位置到底层数据的结尾位置。
// 内置的len和cap函数分别返回slice的长度和容量。
// 多个slice之间可以共享底层的数据并且引用的数组部分区间可能重叠。
// 切片可以对自己进行切片操作生成新的切片
func main() {
month := [...]string{
1: "January",
2: "February",
3: "March",
4: "April",
5: "May",
6: "June",
7: "July",
8: "August",
9: "September",
10: "October",
11: "November",
12: "December",
}
summer := month[6:9]
fmt.Println(summer)
q2 := month[4:7]
fmt.Println(q2)
// 可以用append向切片末尾添加一个元素 或者 另一个切片
var x []int
x = append(x, 1, 2, 3)
fmt.Println(x)
x = append(x, x[1:]...) // 其中在append函数参数中的最后的“...”省略号表示接收变长的参数为slice
fmt.Println(x)
}