← Kembali ke kursus
Pelajaran kursus · Go
Pelajaran 13

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`.