Go语言编程基础 结构体、切片与映射(二)——数组、切片

6 数组

类型[n]T表示拥有n个T类型的值的数组。

表达式

var a [10]int

将变量声明为拥有10个整数的数组。

数组的长度为其类型的一部分,因此数组无法改变大小。

package main

import "fmt"

func main()  {
  var a [2]string
  a[0] = "iiiii"
  a[1] = "jjjjj"
  fmt.Println(a[0], a[1])
  fmt.Println(a)
  ttt := [3]int {1, 2, 3}
  fmt.Println(ttt)
}

7 切片

每个数组的大小是固定的,但切片为数组元素提供了动态大小的、灵活的视角。

类型[]T表示一个数组类型为T的切片。
切片通过两个下标来定界,一个上界一个下界,二者以冒号分隔:

a[low: high]

它会选择一个半开区间,包括第一个元素,但是排除最后一个元素。

package main

import "fmt"

func main() {
	primes := [6]int{2, 3, 5, 7, 11, 13}
	s := primes[1:4]
	fmt.Println(s)
}

8 切片类似于数组的引用

切片不存储任何数据,只描述了底层数组中的一段。
更改切片中的元素会修改其底层数组中对应的元素。
与其共享底层数组的切片都会观测到这些修改。

package main

import "fmt"

func main()  {
  names := [4]string{
    "John",
    "Paul",
    "George",
    "Ringo",
  }
  fmt.Println(names)
  a := names[0: 2]
  b := names[1: 3]
  fmt.Println(a, b)
  b[0] = "XXX"
  fmt.Println(a, b)
  fmt.Println(names)
}

9 切片文法

切片文法类似于没有长度的数组文法。

# 数组文法
[3]bool{true, ture, false}
# 创建一个数组,并以此建立一个切片
[]bool{true, true, false}
package main

import "fmt"

func main()  {
  bbb := []bool{false, true, false, true, false}
  iii := []int{1, 2, 3, 4, 5, 6}
  sss := []struct{
    x int
    y int
    } {{1, 2}, {3, 4}}
  fmt.Println(bbb)
  fmt.Println(iii)
  fmt.Println(sss)
}

学习源:Go指南

猜你喜欢

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