Materi
Array di Go berukuran tetap, dan ukurannya bagian dari tipenya: [3]int dan [4]int adalah dua tipe berbeda. Yang dipakai sehari-hari adalah slice, ditulis []int, yaitu jendela ke sebuah array yang bisa tumbuh. Slice dibuat dengan literal []string{"Ani", "Budi"} atau dengan make([]int, 3), yang berisi tiga nilai nol. len(s) memberi jumlah elemennya.
append(s, x) mengembalikan slice yang sudah memuat x, dan slice lama tidak bertambah panjang. Karena itu hasilnya selalu disimpan kembali: antrean = append(antrean, "Dodi"). Memanggil append tanpa menyimpan hasilnya ditolak kompilator karena nilainya tidak dipakai.
Ekspresi s[a:b] mengambil elemen dari indeks a sampai sebelum indeks b, jadi s[1:3] berisi dua elemen. Hasil pemotongan tidak menyalin data: ia menunjuk array yang sama, sehingga mengubah elemen potongan ikut mengubah slice asalnya. Salinan terpisah dibuat dengan copy atau, sejak Go 1.21, slices.Clone.
package main
import "fmt"
func main() {
antrean := []string{"Ani", "Budi"}
antrean = append(antrean, "Citra")
fmt.Println(antrean, len(antrean)) // [Ani Budi Citra] 3
depan := antrean[0:2]
depan[1] = "Bayu"
fmt.Println(antrean) // [Ani Bayu Citra]
}