Go 語言編程 — 高級數據類型 — 數組

目錄

數組

數組是具有相同數據類型的一組已編號且長度固定的數據項序列,可以是任意的原始數據類型也可以是自定義的數據類型。數組元素可以通過索引(位置)來讀取(或者修改),索引從 0 開始,第一個元素索引爲 0,第二個索引爲 1,以此類推。

在這裏插入圖片描述

定義數組

Golang 數組聲明需要指定元素類型及元素個數,格式如下:

// 聲明
var variable_name [SIZE] variable_type

// 初始化
var balance = [5] float32 {1000.0, 2.0, 3.4, 7.0, 50.0}

注意,初始化數組中 {} 中的元素個數不能大於 [] 中的數字。

也可以省略指定元素的個數,使用 [...] 來表示,編譯器會根據元素的個數來設置數組的大小:

var balance = [...] float32 {1000.0, 2.0, 3.4, 7.0, 50.0}

訪問數組元素

數組元素可以通過索引(位置)來讀取。格式爲數組名後加中括號,中括號中爲索引的值。例如:

  • 更改指定元素的數值:
 balance[4] = 50.0
  • 讀取指定元素的數值:
var salary float32 = balance[9]

示例:

package main

import "fmt"

func main() {
    var n[10] int         /* n 是一個長度爲 10 的數組 */
    var i, j int

    /* 爲數組 n 初始化元素 */        
    for i = 0; i < 10; i++ {
        n[i] = i + 100     /* 設置元素爲 i + 100 */
    }

    /* 輸出每個數組元素的值 */
    for j = 0; j < 10; j++ {
        fmt.Printf("Element[%d] = %d\n", j, n[j])
    }
}

多維數組

多維數組定義格式:

var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type

二維數組是最簡單的多維數組,二維數組定義方式如下:

var arrayName [x][y] variable_type

在這裏插入圖片描述

初始化二維數組

a = [3][4]int { 
    {0, 1, 2, 3} ,    /*  第一行索引爲 0 */
    {4, 5, 6, 7} ,    /*  第二行索引爲 1 */
    {8, 9, 10, 11},   /* 第三行索引爲 2 */
}

訪問二維數組

二維數組通過指定座標來訪問。如數組中的行索引與列索引,例如:

val := a[2][3]
// or
var value int = a[2][3]

示例:

package main

import "fmt"

func main() {
    /* 數組 - 5 行 2 列*/
    var a = [5][2]int{ {0,0}, {1,2}, {2,4}, {3,6}, {4,8} }
    var i, j int

    /* 輸出數組元素 */
    for  i = 0; i < 5; i++ {
       for j = 0; j < 2; j++ {
          fmt.Printf("a[%d][%d] = %d\n", i,j, a[i][j] )
       }
    }
}

向函數傳遞數組

如果想向函數傳遞數組實參,就需要在函數聲明時,聲明形參爲數組類型。

  1. 形參設定數組大小:
void myFunction(param [10] int)
  1. 形參未設定數組大小:
void myFunction(param [] int)

示例:

package main

import "fmt"

func main() {
    /* 數組長度爲 5 */
    var balance = [5] int {1000, 2, 3, 17, 50}
    var avg float32

    /* 數組作爲參數傳遞給函數 */
    avg = getAverage(balance, 5);

    /* 輸出返回的平均值 */
    fmt.Printf("平均值爲: %f", avg);
}

func getAverage(arr [5] int, size int) float32 {
    var i, sum int
    var avg float32  

    for i = 0; i < size; i++ {
        sum += arr[i]
    }

    avg = float32(sum) / float32(size)

    return avg;
}

指針數組

示例:聲明一個整型指針數組

var ptr [MAX] *int;

示例:

package main

import "fmt"

const MAX int = 3

func main() {
    a := [] int {10, 100, 200}
    var i int
    var ptr [MAX] *int;

    for  i = 0; i < MAX; i++ {
       ptr[i] = &a[i]    /* 整數地址賦值給指針數組 */
    }

    for  i = 0; i < MAX; i++ {
       fmt.Printf("a[%d] = %d\n", i, *ptr[i])
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章