Golang - Tipe Data Kompleks (Array, Slice, Map)

Halo para pemrogram sejati, newbie, dan juga yang lagi bingung sama Golang! 
Hari ini kita bakal membahas sesuatu yang sering bikin programmer baru mikir keras: tipe data kompleks di Go, alias array, slice, dan map. Jangan khawatir, kita bakal bahas dengan santai, tapi tetap serius di bagian inti supaya kamu bisa langsung praktek.

 

Kenapa Harus Tahu Tipe Data Kompleks?

Sebelum masuk ke teknis, mari kita ngobrol santai sebentar. Bayangin kamu lagi bikin aplikasi Go misalnya buat catatan belanja online, aplikasi tracking sales, atau bahkan game sederhana. Kalau kamu cuma bisa pakai tipe data dasar kayak int, string, dan bool, rasanya kayak mau bikin nasi goreng tapi cuma punya nasi, air, dan garam. 

Nah, array, slice, dan map ini ibarat bumbu tambahan plus wajan anti lengket yang bikin hidup programmer Go lebih mudah dan “lezat”.

 

Array di Go

Array itu semacam kotak penyimpanan dengan ukuran tetap. Bayangin kamu punya rak dengan 5 kotak, dan tiap kotak bisa menampung satu item. Begitu kamu tentukan ukuran array, nggak bisa ditambah-tambah lagi.

Sintaks Dasar Array

var angka [5]int // array dengan 5 elemen integer

Kamu juga bisa langsung isi nilainya:

var buah = [3]string{"apel", "pisang", "jeruk"}

Atau pakai := supaya lebih ringkas:

buah := [3]string{"apel", "pisang", "jeruk"}

Mengakses dan Mengubah Elemen Array

fmt.Println(buah[0]) // apel
buah[1] = "mangga"
fmt.Println(buah)    // [apel mangga jeruk]

💡 Catatan: Array di Go berukuran tetap, jadi kalau mau tambah item, array lama harus diganti dengan array baru. Nah ini yang bikin array agak kaku dibanding slice.

 

Slice di Go

Slice adalah versi fleksibel dari array. Kamu bisa menambah, menghapus, atau mengambil sebagian elemen. Slice ini yang sering banget dipakai di Go karena lebih praktis.

Membuat Slice

var angkaSlice []int // slice kosong

Atau langsung isi:

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

Menambah Elemen Slice

Pakai fungsi append:

angkaSlice = append(angkaSlice, 6)
fmt.Println(angkaSlice) // [1 2 3 4 5 6]

Mengambil Subslice

Slice juga bisa dipotong kaya pizza:

fmt.Println(angkaSlice[1:4]) // [2 3 4] -> indeks 1 sampai 3, indeks 4 tidak termasuk

Slice vs Array

Fitur Array Slice
Ukuran Tetap Dinamis
Bisa append Tidak Bisa
Fleksibilitas Rendah Tinggi

Jadi, kalau kamu nggak mau ribet hitung ukuran, pakai slice aja. Slice ini ibarat power-up buat array. 

 

Map di Go

Map itu pasangan key-value, mirip dictionary di Python atau object di JavaScript. Map cocok banget kalau kamu mau menyimpan data yang bisa dicari dengan cepat berdasarkan kunci.

Membuat Map

var umur map[string]int
umur = make(map[string]int)

Atau langsung pakai literal:

umur := map[string]int{
    "Andi": 25,
    "Budi": 30,
    "Citra": 28,
}

Mengakses dan Mengubah Map

fmt.Println(umur["Andi"]) // 25
umur["Andi"] = 26
fmt.Println(umur) // map[Andi:26 Budi:30 Citra:28]

Menambah dan Menghapus Entry

umur["Dewi"] = 22 // menambah
delete(umur, "Budi") // menghapus
fmt.Println(umur) // map[Andi:26 Citra:28 Dewi:22]

💡 Catatan: Key di map harus unik. Kalau duplikat, nilai lama bakal tertimpa. Jadi hati-hati jangan sampai “ketabrak data”

 

Kombinasi Array, Slice, dan Map

Yang seru dari Go, kamu bisa mengombinasikan tipe-tipe ini. Misalnya, slice of maps, map of slices, atau array of slices.

Contoh Slice of Map

pelajar := []map[string]string{
    {"nama": "Andi", "kelas": "XII"},
    {"nama": "Budi", "kelas": "XI"},
}

fmt.Println(pelajar[0]["nama"]) // Andi

Contoh Map of Slice

kelas := map[string][]string{
    "XII": {"Andi", "Sari"},
    "XI": {"Budi", "Dewi"},
}

fmt.Println(kelas["XI"]) // [Budi Dewi]

Dengan kombinasi ini, kamu bisa bikin struktur data yang kompleks tapi tetap manageable. Cocok buat aplikasi skala menengah ke atas.

 

Kesalahan Umum yang Harus Dihindari

  1. Keliru membedakan array dan slice: Array = tetap, slice = fleksibel. Jangan bingung, nanti bisa bikin panic.

  2. Map belum di-make: Kalau kamu langsung akses map tanpa make, Go bakal panic.

  3. Index out of range: Slice dan array harus hati-hati saat akses indeks.

      

Oke, kita udah ngobrol panjang lebar tentang array, slice, dan map di Go. Sekarang kamu tahu:

  • Array: Tetap dan sederhana. Cocok kalau ukuran pasti.

  • Slice: Fleksibel dan sering dipakai. Bisa ditambah, dipotong, gampang banget.

  • Map: Key-value pair, ideal untuk pencarian cepat.

Kalau digabung, mereka bisa bikin struktur data powerful. Jadi, jangan takut pakai tipe data kompleks di Go justru mereka bikin hidup programmer lebih mudah dan kode lebih bersih.

 

Fun Fact: 
Slice di Go itu semacam superhero di dunia tipe data. Bisa menampung array, bisa dipotong, bisa digabung pokoknya serba bisa. Jadi kalau kamu cuma pakai array, slice bakal bilang:
"Bro, kasih aku ruang, aku urus semuanya!"Kalau kamu praktek, coba bikin mini-project sederhana: daftar belanja, tracker game, atau catatan murid. Gunakan array, slice, dan map barengan. Dijamin, Go-mu bakal terasa lebih “hidup”.


0 Comments:

Posting Komentar