06.01-陣列(Array)
陣列是一個有著編號的序列,裡頭的每個元素(element)都有相同的單一型別(type)。在 Go 語言中,陣列的樣式看起來如下所示:
x
是一個陣列的範例,由 5 個 int
型別組成,我們試著執行下列的程式:
你應該會看到這樣的執行結果:
x[4] = 100
應該讀為「將陣列的第 5 個元素設定為 100」。可能會覺得奇怪, x[4]
為什麼代表第 5 個元素,而不是如字面所示的第 4 個元素呢?因為陣列的索引值是從 0 起算的,所以陣列的存取方式也是如此。我們可以將 fmt.Println(x)
改成 fmt.Println(x[4])
,這樣我們會得到 100。
這個程式示範如何使用陣列:
此程式會計算一串測驗成績的平均值,執行程式之後應該會看到結果是 86.6
。我們來看看這段程式碼:
我們先建立一個長度為 5 的陣列來儲存這些測驗成績,接著將分數填入每個元素中。
再來使用一個迴圈來計算成績的總和。
最後我們將成績的總和除以元素的數量,以取得平均值。
此程式可以正常運作,但是 Go 有提供一些功能可以讓我們來改進這個程式。在一開始的兩個地方:i < 5
與 total / 5
,若我們想要將成績的數量從 5 個改成 6個,則會需要同時修改這兩個地方,因此建議可以改成使用陣列長度:
修改並執行程式,你會看到發生一個錯誤:
問題在於 len(x)
與 total
的型別不同,total
的型別是 float64
,而 len(x)
的型別是 int
,所以我們需要將 len(x)
強制轉型為 float64
:
這是一個型別轉換的範例,通常使用型別的名稱來進行型別轉換,就像是函式一樣。
另一個可以改的地方是使用特殊的 for 迴圈格式:
這個 for 迴圈中的 i
表示目前正在處理的陣列元素,而 value
則與 x[i]
相同,我們使用 range
這個關鍵字,並接著一個變數名稱(迴圈的終止條件)。
執行此程式會產生另一個錯誤:
Go 編譯器(compiler)不允許你建立用不到的變數,由於我們在迴圈中沒有用到 i
,所以我們要稍微修改程式碼:
可以用單個 _
(底線)來告知編譯器我們不需要這個變數(在此範例中,我們不需要 iterator 變數)
在 Go 可以用另一個較簡短的語法來建立陣列:
我們不用指定型別,因為 Go 自己知道。像這樣的陣列有時可能會太長而無法用一行來表示,所以 Go 也可以讓我們用下列方式來分行:
要注意在 83
後面有一個結尾的 ,
符號,在 Go 語言必須要這樣寫,因為這樣就能透過在前頭加上註解,隨意移除陣列元素:
Last updated