Mastering Golang
  • Tentang Go
  • Instalasi Go
  • Membuat Project Go
  • Go Run & Go Build
  • Apa itu Package pada Go
  • Imports dan Exports
  • Variabel
  • Tipe Data
  • Konstanta dan Komentar
  • Operator
  • Type Conversion
  • Kondisional - IF
  • Kondisional - Switch Case
  • Looping
  • Array
  • Array - Looping
  • Slices
  • Pointer
  • Map
  • Fungsi
  • Struct
  • Method
  • Interface
  • Interface Kosong
  • Concurrency
  • Concurrency - Goroutines
  • Channel
  • Buffered Channel
  • Channel - Close and Range
  • Channel - Direction
  • Channel - Select
  • Concurrency - WaitGroup
  • Concurrency - Mutex
  • JSON Data
  • SQL
  • URL Parsing
  • GO Vendor
  • Unit Testing
  • Go Basic for Web Development
    • Aplikasi Web pada Go - Hello World
    • Root Routing
    • Query String
    • Web Service API Server
    • HTTP Basic Auth
    • RESTFul API dengan Gin dan Gorm
Powered by GitBook
On this page
  • Inisialisasi Nilai map
  • Looping pada map
  • Mutating Maps
  • Retrieve the element
  • Deteksi Keberadaan Item Dengan Key Tertentu
  • Slice of Map

Was this helpful?

Map

Pada sesi ini akan di bahas penggunaan tipe data Map pada Go

PreviousPointerNextFungsi

Last updated 4 years ago

Was this helpful?

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

Kita 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

Kita 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

Untuk melakukan insert dan update data, kita dapat menggunakan cara berikut ini:

m[key] = elem

Kita 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"])
	}
}

Error pada output program
Berhasil menampilkan data yang ada pada map
Output program berisi nilai map pada variabel batch
Menampilkan key dan value dari hasil looping variabel batch
Mengupdate value dari key adorable
Output program menampilkan nilai dari map batch
Output program dari penggunaan fungsi delete pada map
Tidak ditemukam value dari key dilligent
Menampilkan isi slice bertipe map
Hasil perulangan dari slice of map pada variabel batch