C語言中文網 目錄
首頁 > Go語言教程 > Go語言容器 閱讀:8,820

Go語言數組詳解

< 上一頁Go語言容器 Go語言切片下一頁 >

數組(Array)是一段固定長度的連續內存區域。

Go 語言中,數組從聲明時就確定,使用時可以修改數組成員,但是數組大小不可變化。

C/C++ 中的數組

C語言和 Go 語言中的數組概念完全一致。C語言的數組也是一段固定長度的內存區域,數組的大小在聲明時固定下來。下面演示一段C語言的數組:
int a[10]={ 0,1,2,3,4,5,6,7,8,9 };
int b[4];
此時,a 和 b 類型都是 int*,也就是整型指針。而C語言中,也可以使用 malloc() 函數動態地分配一段內存區域。C++ 語言中可以使用 new() 函數。例如:
int* a = (int*)malloc(10);
int* b = new int(4);
此時,a 和 b 的類型也是 int*。a 和 b 此時分配內存的方式類似于 Go 語言的切片。

Go 的數組和切片都是從C語言延續過來的設計。

Go 語言數組的聲明

數組的寫法如下:

var 數組變量名 [元素數量]T

其中:
  • 數組變量名:數組聲明及使用時的變量名。
  • 元素數量:數組的元素數量。可以是一個表達式,但最終通過編譯期計算的結果必須是整型數值。也就是說,元素數量不能含有到運行時才能確認大小的數值。
  • T 可以是任意基本類型,包括 T 為數組本身。但類型為數組本身時,可以實現多維數組。

下面是一段數組的演示例子:
var team [3]string
team[0] = "hammer"
team[1] = "soldier"
team[2] = "mum"

fmt.Println(team)
輸出結果:
[hammer soldier mum]

代碼說明如下:
  • 第 1 行,將 team 聲明為包含 3 個元素的字符串數組。
  • 第 2~4 行,為 team 的元素賦值。

Go語言數組的初始化

數組可以在聲明時使用初始化列表進行元素設置,參考下面的代碼:
var team = [3]string{"hammer", "soldier", "mum"}
這種方式編寫時,需要保證大括號后面的元素數量與數組的大小一致。但一般情況下,這個過程可以交給編譯器,讓編譯器在編譯時,根據元素個數確定數組大小。
var team = [...]string{"hammer", "soldier", "mum"}

...表示讓編譯器確定數組大小。上面例子中,編譯器會自動為這個數組設置元素個數為 3。

遍歷數組——訪問每一個數組元素

遍歷數組也和遍歷切片類似,看下面代碼:
var team [3]string
team[0] = "hammer"
team[1] = "soldier"
team[2] = "mum"

for k, v := range team {
    fmt.Println(k, v)
}
代碼輸出結果:
hammer
soldier
mum

代碼說明如下:
  • 第 6 行,使用 for 循環,遍歷 team 數組,遍歷出的鍵 k 為數組的索引,值 v 為數組的每個元素值。
  • 第 7 行,將每個鍵值打印出來。
< 上一頁Go語言容器 Go語言切片下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo