Array
Kumpulan tetap dengan ukuran yang melekat pada tipenya.
Pahami konsepnya
Array menyimpan sejumlah nilai bertipe sama dengan ukuran tetap: [3]int berarti tepat tiga bilangan bulat, dan angka 3 itu menjadi bagian dari tipenya — [3]int dan [4]int adalah dua tipe berbeda yang tidak bisa saling diisi.
Deklarasinya bisa menyebut ukuran lalu mengisi per indeks, mengisi langsung ([3]int{80, 90, 75}), atau memakai [...] agar Go menghitung sendiri jumlahnya. Akses elemen lewat indeks mulai dari nol, dan len mengembalikan jumlah elemennya.
Sifat penting yang membedakan dari slice: array adalah nilai utuh. Mengirim array ke fungsi atau menugaskannya ke variabel lain menyalin SELURUH isinya — perubahan di salinan tidak menyentuh aslinya. Karena kaku, array jarang dipakai langsung; ia menjadi fondasi di balik slice yang jauh lebih populer.
Coba contoh kode
package main
import "fmt"
func main() {
var nilai [3]int
nilai[0] = 80
nilai[1] = 90
nilai[2] = 75
singkat := [...]int{4, 8, 15, 16, 23, 42}
fmt.Println(len(nilai), len(singkat), nilai[1], singkat[5])
}nilai dideklarasikan dulu lalu diisi per indeks; singkat memakai [...] sehingga ukurannya dihitung dari jumlah nilai (6). len melaporkan jumlah elemen tiap array. Keluaran: 3 6 90 42.
Array adalah nilai yang disalin
func ubah(a [3]int) {
a[0] = 999
}
func main() {
asli := [3]int{1, 2, 3}
ubah(asli)
fmt.Println(asli) // [1 2 3] — tidak berubah
}Fungsi ubah menerima salinan array, jadi modifikasi di dalamnya lenyap saat fungsi pulang — asli tetap [1 2 3]. Bandingkan dengan slice pada pelajaran berikutnya yang justru membagi memori; kontras inilah yang membuat keduanya mudah diingat.
Array multidimensi
func main() {
papan := [2][3]int{
{1, 2, 3},
{4, 5, 6},
}
fmt.Println(papan[1][2]) // 6
}Array dari array membentuk matriks: [2][3]int berarti dua baris bertiga. Aksesnya berantai papan[baris][kolom]. Pola yang sama berlaku untuk slice multidimensi.
Latihan singkat
Uji: hitung rata-rata lima nilai — program harus mencetak persis `75`.