11 Golang切片slice

11 切片slice

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package main

import "fmt"

/*
定义切片:声明一个未指定大小的数组来定义切片
var identifier []type // 切片不需要说明长度

或者使用make()函数来创建切片:
var slicel []type = make([]type, len)
slicel := make([]type, len)

指定容量:(可以省略不写),要求length <= capacity,符合逻辑
make([]T, length, capacity)


len()
cap()

append()
copy()
*/

func main(){
var arr = [] int{1, 3, 4, 5, 3, 2, 7}
a := arr[1:5]
b := arr[:5]
c := arr[1:]
d := arr[len(arr) - 1:len(arr) - 0]

fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)


var array = make([]int, 5, 7)
fmt.Println(array)
fmt.Println("len =", len(array), "\ncap =", cap(array))


arrayAppend := append(array, 1)
fmt.Println(arrayAppend)


arrayCopy := make([]int, 3)
// 如果len(array_copy) < len(array_append)那么只会复制len(array_copy)个元素
copy(arrayCopy, arrayAppend)
fmt.Println(arrayCopy)
}