Map
Pada sesi ini akan di bahas penggunaan tipe data Map pada Go
Map adalah tipe data pada Go berbentuk key-value pair. map mirip seperti slice, hanya saja indeks yang digunakan untuk pengaksesan bisa ditentukan sendiri tipe-nya (indeks tersebut adalah key).
package main
import (
"fmt"
)
func main() {
var batch map[string]int
batch["adorable"] = 20
batch["brilliant"] = 10
fmt.Println("Jumlah anggota batch adorable", batch["adorable"])
fmt.Println("Jumlah anggota batch brilliant", batch["brilliant"])
}
Pada kode di atas jika dijalankan akan muncuk error ini karena pada map nilai default adalah nil sehingga kita harus membuat inisialisasi nilai default di awal seperti ini:
package main
import (
"fmt"
)
func main() {
var batch map[string]int
batch = map[string]int{} // Inisialisasi nilai default
batch["adorable"] = 20
batch["brilliant"] = 10
fmt.Println("Jumlah anggota batch adorable", batch["adorable"])
fmt.Println("Jumlah anggota batch brilliant", batch["brilliant"])
}

Inisialisasi Nilai map
mapKita juga bisa langsung memasukkan nilai pada variabel bertipe map dengan menggunakan literal {} seperti berikut ini:
package main
import (
"fmt"
)
func main() {
batch := map[string]int{"adorable": 20, "brilliant": 10}
fmt.Println("Jumlah anggota batch adorable", batch["adorable"])
fmt.Println("Jumlah anggota batch brilliant", batch["brilliant"])
}
Looping pada map
mapKita bisa menggunakan for - range untuk looping pada map . Cara penerapannya masih sama seperti pada slice, pembedanya data yang dikembalikan di tiap perulangan adalah key dan value, bukan indeks dan elemen.
package main
import (
"fmt"
)
func main() {
batch := map[string]int{"adorable": 20, "brilliant": 10, "creative": 15}
for key, val := range batch {
fmt.Println(key, ":", val)
}
}
Mutating Maps
Berikut adalah beberapa hal yang dapa kita lakukan pada map :
Insert or Update map
mapUntuk melakukan insert dan update data, kita dapat menggunakan cara berikut ini:
m[key] = elemKita lihat bahwa kita harus mengetahui key dari map dan meng-assign nilai ke dalam map .
package main
import (
"fmt"
)
func main() {
batch := map[string]int{"adorable": 20, "brilliant": 10, "creative": 15}
// Update value dari key "adorable"
batch["adorable"] = 8
fmt.Println(batch["adorable"])
}
Retrieve the element
Kita dapat menyimpan value dari key pada map dengan cara seperti berikut ini:
elem = m[key]package main
import (
"fmt"
)
func main() {
batch := map[string]int{"adorable": 20, "brilliant": 10, "creative": 15}
a := batch["adorable"]
b := batch["brilliant"]
c := batch["creative"]
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}

Delete elemen pada map
Kita juga dapat menghapus elemen pada map menggunakan function built-in delete .
delete(m, key)package main
import (
"fmt"
)
func main() {
batch := map[string]int{"adorable": 20, "brilliant": 10, "creative": 15}
delete(batch, "adorable")
fmt.Println(batch["adorable"])
fmt.Println(batch)
}Dari kode di atas kita lihat bahwa kita menghapus elemen map pada key adorable sehingga jika kita akses key dari adorable dan isi dari map batch maka akan menghasilkan output seperti berikut ini:

Deteksi Keberadaan Item Dengan Key Tertentu
Ada cara untuk mengetahui apakah dalam sebuah variabel map terdapat item dengan key tertentu atau tidak, yaitu dengan memanfaatkan 2 variabel sebagai penampung nilai kembalian pengaksesan item
elem, ok = m[key]package main
import (
"fmt"
)
func main() {
batch := map[string]int{"adorable": 20, "brilliant": 10, "creative": 15}
value, isExist := batch["dilligent"]
if isExist {
fmt.Println(value)
} else {
fmt.Println("item is not exists")
}
}
Slice of Map
Kita dapat menggunakan slice of map atau kombinasi antara slice dan map.
package main
import (
"fmt"
)
func main() {
batch := []map[string]string{
{"name": "adroable", "year": "2020"},
{"name": "brilliant", "year": "2021"},
{"name": "creative", "year": "2019"},
}
fmt.Println(batch)
}Dari kode di atas dapat disimpulkan yaitu slice yang tipe tiap elemen-nya adalah map[string]string .

Bagaimana jika kita ingin menghasilkan seluruh elemen slice yang bertipe map? kita daoat menggunakan looping for - range :
package main
import (
"fmt"
)
func main() {
batch := []map[string]string{
{"name": "adroable", "year": "2020"},
{"name": "brilliant", "year": "2021"},
{"name": "creative", "year": "2019"},
}
for _, value := range batch {
fmt.Println(value["name"])
}
}
Last updated
Was this helpful?