Array & Slice

Koleksi berurutan: array tetap, slice fleksibel, append, dan slicing.

Part 12 dari 23 ± 40 menit Gratis

Array: ukuran tetap

var nilai [3]int                 // [0 0 0]
hari := [3]string{"Sen", "Sel", "Rab"}

Panjang array adalah bagian dari tipenya: [3]int dan [4]int adalah tipe berbeda. Array jarang dipakai langsung karena kaku.

Slice: koleksi fleksibel

Slice adalah "jendela" ke sebuah array di belakang layar. Ia punya tiga komponen: pointer ke array, len (jumlah elemen) dan cap (kapasitas).

s := []int{1, 2, 3}
fmt.Println(s[0], len(s), cap(s))   // 1 3 3

append

Menambah elemen. Selalu tampung hasilnya:

s = append(s, 4)
s = append(s, 5, 6)
s = append(s, lain...)   // menggabungkan slice

Jika kapasitas penuh, Go membuat array baru yang lebih besar (kira-kira dua kali lipat), menyalin isi lama, lalu menambah elemen. Itu sebabnya append bisa mengembalikan slice yang menunjuk array berbeda.

make

Membuat slice dengan panjang dan kapasitas awal:

s := make([]int, 3)        // [0 0 0], len 3 cap 3
t := make([]int, 0, 10)    // kosong, kapasitas 10

Jika sudah tahu jumlah data, make dengan kapasitas mengurangi alokasi ulang.

Slicing

s := []int{10, 20, 30, 40, 50}
s[1:3]   // [20 30]  (index 1 sampai SEBELUM 3)
s[:2]    // [10 20]
s[2:]    // [30 40 50]

Hasil slicing berbagi array yang sama dengan aslinya. Mengubah elemen di satu slice dapat memengaruhi yang lain. Gunakan copy untuk membuat salinan independen:

salinan := make([]int, len(s))
copy(salinan, s)

Menghapus elemen

s = append(s[:1], s[2:]...)   // hapus elemen index 1

nil slice

var s []int adalah nil slice: len 0, dan aman dipakai di append maupun range.

Slice 2 dimensi

grid := [][]int{{1, 2}, {3, 4}}

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X