day6 切片
parent
ae9db382cc
commit
0247d394ee
|
@ -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)
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue