数组

- 介绍:

数组是同一类型元素的集合。
Go 语言中不允许混合不同类型的数据;
数组的个数也是数组类型的一部分,换句话来说,数组中的元素的数量是固定的,等同于python中的元组 注意: 如果是
interface{} 类型数组,可以包含任意类型

 

- 声明数组:

  - 数组的表现形式: [n]T ;

    - n: 表示数组中元素的数量;

    - T:表示每个元素的类型;

    - 声明数组后,若不初始化,则会将所有的元素全部赋值为该类型的零值;

  - 示例:

package main

import (
    "fmt"
)

func main() {
    var a [3]int //int array with length 3
    fmt.Println(a)
}

// 打印内容:[0 0 0]

 

- 数组赋值:

  - 根据索引赋值:

  - 示例:

package main

import (
    "fmt"
)

func main() {
    var a [3]int       //int array with length 3
    a[0] = 12         // array index starts at 0
    a[1] = 78
    a[2] = 50
    fmt.Println(a)
}
// 打印内容: [12 78 50]

 

  - 简略声明,且初始化赋值:

    - 在简略声明中,不需要将全部的元素都进行赋值,Go 会自动将多余的元素赋值为零值;

    - 示例:

package main

import (
    "fmt"
)

func main() {
    a := [3]int{12, 78, 50} // short hand declaration to create array
    fmt.Println(a)
}

// 打印内容:[12 78 50]

 

  - 忽略数组长度,声明数组:

    - 语法: [...]T{a,b,c}

    - Go 的编译器会自动计算数组的长度;

    - 示例:

package main

import (
    "fmt"
)

func main() {
    a := [...]int{12, 78, 50} // ... makes the compiler determine the length
    fmt.Println(a)
}

// 打印内容:[12 78 50]

 

- 数组的类型问题:

  - 数组是值类型;

    - 当数组赋值给一个新的变量时,该变量会得到一个原始数组的一个副本。对新变量进行更改,不会影响原始数组;

    - 示例:

 1 // 示例1:
 2 
 3 package main
 4 
 5 import "fmt"
 6 
 7 func main() {
 8     a := [...]string{"USA", "China", "India", "Germany", "France"}
 9     b := a // a copy of a is assigned to b
10     b[0] = "Singapore"
11     fmt.Println("a is ", a)
12     fmt.Println("b is ", b) 
13 }
14 // 打印内容:
15     a is [USA China India Germany France]  
16     b is [Singapore China India Germany France]
17 
18 
19 // 示例2:
20 package main
21 
22 import "fmt"
23 
24 func changeLocal(num [5]int) {
25     num[0] = 55
26     fmt.Println("inside function ", num)
27 }
28 func main() {
29     num := [...]int{5, 6, 7, 8, 8}
30     fmt.Println("before passing to function ", num)
31     changeLocal(num) //num is passed by value
32     fmt.Println("after passing to function ", num)
33 }
34 
35 // 打印内容:
36     before passing to function  [5 6 7 8 8]
37     inside function  [55 6 7 8 8]
38     after passing to function  [5 6 7 8 8]
示例

相关文章: