Golang Bagian 14

Neraka ngoding
Neraka Ngoding
Published in
8 min readMar 28, 2020

Map

Selamat pagi kawan-kawan semoga sehat-sehat selalu aminnnn!!!!. Kali ini saya akan bahas tipe data built in, non primitive yang ketiga dibahasa pemograman Golang yaitu Map.

Sebelum kita definisikan Map itu apa pertama kita harus tahu dulu apa itu Hash Table. Berikut adalah definisi menurut saya.

“Hash Table adalah struktur data yang berisi kumpulan data dimana setiap data mempunyai key dan value” .

Sekilas dari definisinya Hash Table mirip dengan Array Seperti kode dibawah kalau pakai Array

var x [5]int x[0] = 20 x[1] = 254 x[2] = 23 x[3] = 45 x[4] = 67

Hash Table untuk akses anggotanya tidak harus dengan indek Integer seperti kode diatas x[0] sampai x[4], tetapi bisa seperti ini.

x["satu"] = 20x["dua"] = 254x["adasd"] = 23x["satuasd"] = 45x["satuasd"] = 67

Saya yakin dibuatnya struktur data Hash Table cuman dua, ingat fatwa tentang coding, ujung-ujungnya ngoding itu harus memenuhi dua syarat :

  1. Mudah dibaca oleh coder siapa pun.
  2. Performance harus mantap.

Ingat-ingat ketika mulai ngoding!!!!. Tujuan dibuat Hash Table adalah optimasi struktur data seperti Array agar mudah dibaca dan performance mantap dengan syarat kondisi tertentu. Hash Table diimplementasikan oleh Map di-Golang . Tidak semua kondisi Hash Table lebih baik contoh berikut adalah komparasi Array dan Hash Table, bisa dicoba disini programnya.

Program 1.

Penjelasan program 1:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai 14 deklarasi Array x dua dimensi 3 x 2 dengan tipe data String dengan anggota {“Baju”, “100.000”},{“Celana”, “200.000”}, dan {“Topi”, “300.000”}
  • Baris 17 dan 23 looping i=0 sampai i<len(x).
  • Baris 19 dan 22 checking jika x[i][0] sama dengan “Celana”.
  • Baris 21 print Harga Celana , x[i][1], %s untuk format String.
  • Baris 25 sampai 29 deklarasi map dengan tipe key String dan valuenya float32 dengan anggota “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 31 print harga Celana dengan cukup m[“Celana”]. Dari kode ini terlihat jelas untuk situasi ini kita harus memakai Hash Table atau map di-Golang karena sangat mudah dibaca dibandingkan dengan Array yang harus looping untuk mencari celana dan juga secara performance lebih cepat soalnya dengan menggunakan Map kita tidak harus memakai looping untuk mencari “celana”. Selain itu teman-teman perhatikan dengan menggunakan Map valuenya bisa tipe data apa aja sehingga lebih flexible.

Output :

Harga Celana = 200.000
Harga Celana = 200000.000000

Beberapa Sifat-Sifat Map

  1. Key tidak boleh duplikat.
  2. Key bisa tipe data apa saja, tetapi harus satu tipe data dalam sebuah Map.
  3. Value bisa tipe apa saja, tetapi harus satu tipe data dalam sebuah Map.
  4. Jumlah anggota Map tidak fixed seperti Slice.
  5. Anggota Map tidak berurutan atau unordered list . Tidak seperti Array yang mempunyai indek berurutan.

Deklarasi Map

  1. Deklarasi Map kosong.

Programnya bisa dicoba disini.

Program 2.

Penjelasan program 2:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi map kosong dengan tipe data key adalah String dan tipe data value adalah Integer. Compile error akan terjadi jika menambahkan anggota Map pada map kosong.
  • Baris 9 print map m.

Output :

map[]

2. Deklarasi Map dengan literal.

Programnya bisa dicoba disini.

Program 3.

Penjelasan program 3:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai baris 13 adalah deklarasi Map m dengan tipe data key String dan tipe data value adalah Float32. Map m beranggotakan “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 15 print value “Baju” . Teman-teman perhatikan ada digit dibelakang koma karena tipe data value Map m adalah Float32.
  • Baris 16 print value “Celana” . Teman-teman perhatikan ada digit dibelakang koma karena tipe data value Map m adalah Float32.
  • Baris 17 print value “Topi” . Teman-teman perhatikan ada digit dibelakang koma karena tipe data value Map m adalah Float32.

Output :

Harga Baju = 100000.000000
Harga Celana = 200000.000000
Harga Topi = 300000.000000

3. Deklarasi Map dengan fungsi make.

Programnya bisa dicoba disini.

Program 4.

Penjelasan program 4:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 deklarasi Map m dengan tipe data key string dan value float32 dengan mengunakan fungsi make.
  • Baris 11 print Map m terlihat di-output kosong.
  • Baris 13 isi anggota key “Baju” Value 100000.
  • Baris 14 isi anggota key “Celana” Value 200000.
  • Baris 15 isi anggota key “Baju” Value 300000.
  • Baris 17 print Map m terlihat di-output tidak kosong.
  • Baris 19 print value “Baju” . Teman-teman perhatikan ada digit dibelakang koma karena tipe data value Map m adalah Float32.
  • Baris 20 print value “Celana” . Teman-teman perhatikan ada digit dibelakang koma karena tipe data value Map m adalah Float32.
  • Baris 21 print value “Topi” . Teman-teman perhatikan ada digit dibelakang koma karena tipe data value Map m adalah Float32.

Output :

map[]
map[Baju:100000 Celana:200000 Topi:300000]
Harga Baju = 100000.000000
Harga Celana = 200000.000000
Harga Topi = 300000.000000

Akses Anggota Map

Sebenarnya dari beberapa program diatas sudah dicontohkan cara mengakses anggota Map yaitu dengan key nya. Misal Map m punya key “Satu”

m[“Satu”]

Modifikasi Map

Map seperti database dapat kita tambahkan atau Add, Hapus atau Delete , dan Update atau anggotanya dinamis tidak statis seperti Array.

  1. Add

Langsung aja pakai program bisa dicoba disini.

Penjelasan program 5:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai baris 13 adalah deklarasi Map m dengan tipe data key String dan tipe data value adalah Float32. Map m beranggotakan “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 15 print Map m terlihat jumlah anggota masih tiga.
  • Baris 17 Add anggota Map m map[“Jaket”] = 400000. Jangan lupa key dan valuenya harus sesuai dengan deklarai baris 9 sampai 13 yaitu String dan Float32.
  • Baris 19 print Map m terlihat jumlah anggota menjadi 4.

Output :

map[Baju:100000 Celana:200000 Topi:300000]
map[Baju:100000 Celana:200000 Jaket:400000 Topi:300000]

2. Delete

Programnya bisa dicoba disini.

Program 6.

Penjelasan program 6:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai baris 13 adalah deklarasi Map m dengan tipe data key String dan tipe data value adalah Float32. Map m beranggotakan “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 15 delete anggota Map m yaitu “Topi” dengan fungsi delete dengan parameter pertama adalah Map dan kedua adalah key yang mau di-delete.
  • Baris 17 print Map m terlihat anggota key “Topi” sudah hilang.

Output :

map[Baju:100000 Celana:200000]

3. Update

Update atau merubah nilai value suatu Map m. Programnya bisa dicoba disini.

Program 7.

Penjelasan program 7:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai baris 13 adalah deklarasi Map m dengan tipe data key String dan tipe data value adalah Float32. Map m beranggotakan “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 15 print Map m sebelum dirubah terlihat harga Topi masih 300000.
  • Baris 17 update anggota Map m yaitu “Topi” dengan value baru 400000 .
  • Baris 19 print Map m terlihat anggota key “Topi” value nya berubah dari 300000 menjadi 400000.

Output :

map[Baju:100000 Celana:200000 Topi:300000]
map[Baju:100000 Celana:200000 Topi:400000]

Checking Anggota Map

Checking anggota Map maksudnya ngecheck apakah anggota Map ada tidak dengan menggunakan keynya.

Programnya bisa dicoba disini.

Program 8.

Penjelasan program 8:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai baris 13 adalah deklarasi Map m dengan tipe data key String dan tipe data value adalah Float32. Map m beranggotakan “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 15 itu setiap kita akses nilai anggota Map dengan m[“Jaket”] sebenarnya mempunyai dua nilai balik yaitu valuenya dan result hasilnya true jika ada anggota atau false jika tidak ada anggota.
  • Baris 17 print checkValue 0 karena memang tidak ada anggota Map m yang keynya “Jaket”.
  • Baris 18 print result false karena memang tidak ada anggota Map m yang keynya “Jaket”.
  • Baris 21 itu checking m[“Topi”].
  • Baris 17 print checkValue2 300000 karena memang ada anggota Map m yang keynya “Topi” dan result2 true .
  • Baris 18 print result true karena memang ada anggota Map m yang keynya “Jaket”.

Output :

0
false
300000
true

jika teman-teman tidak memerlukan nilai balik valuenya begini aja

_,result:= m[“Jaket”]

Looping Map

Looping Map mirip dengan looping Slice menggunakan Range bisa dicoba disini programnya.

Program 9.

Penjelasan program 9:

  • Baris 1 kita akan menyimpan program ini di package main supaya di-compile menjadi executable(dijelaskan di post Golang Bagian 2).
  • Baris 3–5 kita akan menggunakan package fmt didalamnya terdapat fungsi Println/Printf yang berfungsi untuk print output ke standard output seperti monitor.
  • Baris 7 kita menggunakan fungsi khusus main sebagai pintu masuk program Go.
  • Baris 9 sampai baris 13 adalah deklarasi Map m dengan tipe data key String dan tipe data value adalah Float32. Map m beranggotakan “Baju”: 100000,“Celana”: 200000,“Topi”: 300000.
  • Baris 15 dan 19 looping Map m dengan Range seperti diblog sebelumnya range mempunyai nilai balik dua yaitu key dan value.
  • Baris 17 print key dan value

Output :

Baju 100000
Celana 200000
Topi 300000

Okayyy saya kira sudah bahas semua dasar — dasar Golang blog berikutnya akan lebih seru lagi. Tetap semangat kawan-kawan. Silahkan baca blog Golang lain nya di sini.

--

--

Neraka ngoding
Neraka Ngoding

Coder terbaik sebatununggal-bandung, west java, indonesia belum terkalahkan selama 15 tahun. “Coder adalah Identitas bukan profesi”