0Pricing
Go Academy · Pelajaran

Map sebagai Set

Gunakan map untuk nilai unik

Map sebagai Set adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Go Tidak Memiliki Jenis Himpunan

Go tidak memiliki jenis himpunan bawaan. Cara idiomatis untuk memodelkan himpunan nilai unik adalah menggunakan peta dengan elemen himpunan sebagai kuncinya.

Peta Boolean

Salah satu pendekatan adalah map[string]bool. Keberadaan sebuah kunci (dan nilai true) berarti elemen tersebut ada dalam himpunan.

package main

import "fmt"

func main() {
	set := map[string]bool{}
	set["apple"] = true
	set["banana"] = true
	fmt.Println(set)
}

Memeriksa Keanggotaan

Gunakan koma-ok atau baca boolean secara langsung untuk menguji keanggotaan.

package main

import "fmt"

func main() {
	set := map[string]bool{"apple": true}
	fmt.Println(set["apple"])
	fmt.Println(set["cherry"])
}

Peta Struct Kosong

Himpunan yang lebih hemat memori menggunakan map[string]struct{}. Struct kosong menggunakan nol byte, sehingga Anda hanya menyimpan kunci.

package main

import "fmt"

func main() {
	set := map[string]struct{}{}
	set["x"] = struct{}{}
	_, ok := set["x"]
	fmt.Println("x in set:", ok)
}

Mengapa Struct Kosong

Nilai tidak pernah penting dalam sebuah himpunan; yang penting hanya kuncinya. struct{}{} menandakan bahwa Anda bermaksud mengabaikan nilai dan tidak menggunakan memori tambahan untuk setiap entri.

Menambahkan Elemen

Menambahkan kunci duplikat tidak berdampak apa pun, sehingga himpunan secara alami menjamin keunikan.

package main

import "fmt"

func main() {
	set := map[string]struct{}{}
	set["a"] = struct{}{}
	set["a"] = struct{}{}
	fmt.Println("size:", len(set))
}

Menghapus Duplikasi

Salah satu penggunaan klasiknya adalah menghapus duplikasi dari slice. Tambahkan setiap elemen ke himpunan, lalu baca kembali kunci-kunci uniknya.

package main

import "fmt"

func main() {
	input := []string{"a", "b", "a", "c", "b"}
	set := map[string]struct{}{}
	for _, v := range input {
		set[v] = struct{}{}
	}
	fmt.Println("unique count:", len(set))
}

Membangun Slice Unik

Gabungkan himpunan dengan slice hasil untuk mempertahankan urutan kemunculan pertama sekaligus menghapus duplikasi.

package main

import "fmt"

func main() {
	input := []int{1, 2, 1, 3, 2}
	seen := map[int]struct{}{}
	result := []int{}
	for _, v := range input {
		if _, ok := seen[v]; !ok {
			seen[v] = struct{}{}
			result = append(result, v)
		}
	}
	fmt.Println(result)
}

Irisan Himpunan

Untuk menemukan elemen yang sama pada dua himpunan, iterasikan salah satunya dan pertahankan elemen yang ada pada himpunan lainnya.

package main

import "fmt"

func main() {
	a := map[int]struct{}{1: {}, 2: {}, 3: {}}
	b := map[int]struct{}{2: {}, 3: {}, 4: {}}
	for k := range a {
		if _, ok := b[k]; ok {
			fmt.Println("common:", k)
		}
	}
}

Menghapus dari Himpunan

Gunakan delete untuk mengeluarkan sebuah elemen dari himpunan.

package main

import "fmt"

func main() {
	set := map[string]struct{}{"a": {}, "b": {}}
	delete(set, "a")
	_, ok := set["a"]
	fmt.Println("a in set:", ok)
}

Memilih bool atau struct{}

Keduanya dapat digunakan. Gunakan map[T]bool jika keterbacaan set[x] sebagai boolean membantu. Gunakan map[T]struct{} jika Anda ingin menegaskan bahwa nilai tidak penting dan menghemat memori pada himpunan berukuran besar.

Pemeriksaan Singkat

Mengapa map[string]struct{} sering lebih disukai daripada map[string]bool untuk himpunan?

Ringkasan

Peta sebagai himpunan:

  • Go tidak memiliki jenis himpunan; gunakan peta dengan elemen sebagai kunci
  • map[T]bool atau map[T]struct{}
  • Sangat berguna untuk menghapus duplikasi dan menguji keanggotaan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Map sebagai Set” gratis?

Ya — teks lengkap “Map sebagai Set” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Map sebagai Set”?

Gunakan map untuk nilai unik Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Map sebagai Set” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Bagian Dalam Map
  2. Memeriksa Keberadaan
  3. Map sebagai Set
  4. Iterasi dan Pengurutan
← Kembali ke Go Academy