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

14 切片的切片

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

package main

import "fmt"

func main()  {
  iii := [][]int{ []int{1, 2}, []int{3, 4}, []int{5, 6} }
  fmt.Println(iii)
}

15 向切片追加元素

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

func append(s []T, vs ...T) []T

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

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

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

package main

import "fmt"

func main()  {

  var ii []int
  jj := append(ii, 999)
  printSlice(jj)
  printSlice(ii)
  kk := append(ii, 1,2,3,4,5)
  printSlice(kk)
  printSlice(ii)
}

func printSlice(s []int)  {
  fmt.Printf("len=%d cap=%d %v \n", len(s), cap(s), s)
}

16 Range

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

package main

import "fmt"

func main()  {
  ii := []int{1, 2, 3, 4, 5, 6, 7}
  for i, v := range ii{
    fmt.Println(i, v)
  } 
}

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

package main

import "fmt"

func main()  {
  var ii = []int{1, 2, 3, 4, 5, 6}
  for i := range ii{
    ii[i] += 10
  }
  for _, v := range ii {
    fmt.Println(v)
  }
}

学习源:Go 指南

猜你喜欢

转载自blog.csdn.net/qq_32165041/article/details/83861861