Go语言编程基础 结构体、切片与映射(四)——切片、range

释放双眼,带上耳机,听听看~!

14 切片的切片

切片可包含任何类型,甚至包括其他切片。


1
2
3
4
5
6
7
8
9
10
1package main
2
3import "fmt"
4
5func main()  {
6  iii := [][]int{ []int{1, 2}, []int{3, 4}, []int{5, 6} }
7  fmt.Println(iii)
8}
9
10

15 向切片追加元素

Go提供了append函数,用于向切片追加新元素。


1
2
3
1func append(s []T, vs ...T) []T
2
3

append的第一个参数为s为元素类型为T的切片,其余类型T的值将会追加到该切片的末尾。

append的结果是一个包含原切片所有元素加上新添加元素的切片。

当s的底层数组太小,不足以容纳所有给定的值时,它就会分配一个更大的数组。返回的切片会指向新分配的数组。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1package main
2
3import "fmt"
4
5func main()  {
6
7  var ii []int
8  jj := append(ii, 999)
9  printSlice(jj)
10  printSlice(ii)
11  kk := append(ii, 1,2,3,4,5)
12  printSlice(kk)
13  printSlice(ii)
14}
15
16func printSlice(s []int)  {
17  fmt.Printf("len=%d cap=%d %v \n", len(s), cap(s), s)
18}
19
20

16 Range

for循环的range形式可遍历切片或映射。
当使用for循环遍历切片时,每次迭代都会返回两个值。第一个值为当前元素的下标,第二个值为该下标所对应元素的一份副本。


1
2
3
4
5
6
7
8
9
10
11
12
1package main
2
3import "fmt"
4
5func main()  {
6  ii := []int{1, 2, 3, 4, 5, 6, 7}
7  for i, v := range ii{
8    fmt.Println(i, v)
9  }
10}
11
12

可以使用_来忽略索引或值。
如果只需要所以,将,value的部分去除即可。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1package main
2
3import "fmt"
4
5func main()  {
6  var ii = []int{1, 2, 3, 4, 5, 6}
7  for i := range ii{
8    ii[i] += 10
9  }
10  for _, v := range ii {
11    fmt.Println(v)
12  }
13}
14
15

学习源:Go 指南

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++异常

2022-1-11 12:36:11

安全经验

跨域问题解决方案

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索